The Delphi Magazine: Complete Article Detail

Under Construction: Build Your Own Components
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 1 : April 1995 View article View source code
Summary Bob Swart kicks off his regular column by showing us how to get started on writing Delphi components, using Date and Agenda components as his examples.
Keywords Agenda component; Building components; Date components; Date formats; Hex and Roman formats; Under Construction Column

Back to top


Moving Up: Borland Pascal
Authors Dave Jewell Type: Article
Issue 1 : April 1995 View article No source code
Summary Dave Jewell gives the Borland Pascal developers amongst us the low down on moving up to Delphi
Keywords As, Is and In keywords; Borland Pascal; Case optimisations; Class versus Object; Exception handling; Open arrays; Properties; Result variable in functions

Back to top


The Delphi Idiom
Authors Steve Teixeira Type: Article
Issue 1 : April 1995 View article No source code
Summary Steve provides an insider's introduction to Delphi's features and capabilities.
Keywords Exception handling; Message handling

Back to top


Optimising Display Updating
Authors Mike Scott Type: Article
Issue 1 : April 1995 View article View source code
Summary Mike shows how to make your screen refreshes really fast.
Keywords Clipping regions; Graphics; Paint method; Reducing flicker; Screen refresh

Back to top


Inroducing Client/Server
Authors Sundar Rajan Type: Article
Issue 1 : April 1995 View article No source code
Summary A beginner's guide to client/server development, explaining some key principles and the benefits to be gained from using Delphi.
Keywords 2-schema and 3-schema; Client/server

Back to top


Delphi Internals: Using and Writing DLLs
Authors Dave Jewell Type: Article
Issue 1 : April 1995 View article No source code
Summary Dave shows how to call DLLs in Delphi applications and how to write your own.
Keywords Delphi Internals column; EXTERNAL keyword; Using DLLs; WINPROCS unit; Writing DLLs

Back to top


Book Review: "Inside Windows 95" by Adrian King
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 1 : April 1995 View article No source code
Summary
Keywords Adrian King; Book reviews; Inside Windows 95; Windows 95

Back to top


Using the Borland Visual Solutions Pack
Authors Jeroen Pluimers Type: Review
Issue 1 : April 1995 View article View source code
Summary A review of and tips on using the Visual Solutions Pack of VBX controls with Delphi, including an example RTF editor.
Keywords Installing VBX controls; RTF editor; Reviews; Visual Solutions Pack

Back to top


Animation Made Easy
Authors Xavier Pacheco Type: Article
Issue 1 : April 1995 View article View source code
Summary How to achieve simple sprite animation using Delphi.
Keywords Animation; BitBlt; Graphics; Screen flicker; Sprites; Using bitmaps

Back to top


Review: The Chief's Installer Pro
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 1 : April 1995 View article No source code
Summary Bob Swart looks into this shareware Windows installation program which is ideal for installing your Delphi applications -- even better, it is included on the free disk with Issue 2.
Keywords Chief's Installer Pro; Dr A Olowofoyeku; Install programs; Reviews; The African Chief

Back to top


Failure to initialise IDAPI error
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 1 : April 1995 View article View source code
Summary The BDE requires SHARE.EXE to be loaded or this error results.
Keywords BDE Error code $2C09; Failure to initialise IDAPI; SHARE.EXE

Back to top


Component in Design or Runtime mode?
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 1 : April 1995 View article View source code
Summary Use csDesigning flag.
Keywords Component building; Design or runtime mode; csDesigning

Back to top


TEXT file type
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 1 : April 1995 View article View source code
Summary Use SYSTEM.TEXT to specify this file type.
Keywords Error 21: Error in type; SYSTEM unit; TEXT file type

Back to top


Private, Public, Published identifiers
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 1 : April 1995 View article View source code
Summary Private, Public, Published identifiers explained.
Keywords Component building; Private; Public; Published

Back to top


Working with MS Access files in Delphi 1
Authors Chris Frizelle , Ralph Friedman Type: Clinic
Issue 1 : April 1995 View article View source code
Summary How to use MS Access .MDB files in Delphi 1
Keywords .MDB files; Access ODBC driver; MS Access files; ODBC

Back to top


Assigning initial property values
Authors Bob Swart (aka Dr.Bob) Type: Tip
Issue 1 : April 1995 View article View source code
Summary How to assign initial values to properties in your components.
Keywords Component building; Initialising properties; Properties; Property Default value; Property initial values

Back to top


Auto-deleting event handler code
Authors Bob Swart (aka Dr.Bob) Type: Tip
Issue 1 : April 1995 View article View source code
Summary
Keywords Event handlers

Back to top


ExitWindows
Authors Bob Swart (aka Dr.Bob) Type: Tip
Issue 1 : April 1995 View article View source code
Summary Correct definition for the ExitWindows API function
Keywords ExitWindows API function; Windows API

Back to top


Building Quality Help Systems
Authors Robert Palomo Type: Article
Issue 2 : July 1995 View article No source code
Summary Robert shows how to keep your users happy by designing and writing better Help systems for your applications.
Keywords Building Help; Designing Help; Help authoring tools; Hypergraphics; Hypertext

Back to top


Book Review: Delphi Programming For Dummies by Neil Rubenking
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 2 : July 1995 View article No source code
Summary
Keywords Book reviews; Delphi for Dummies; Neil Rubenking

Back to top


Subclassing Windows
Authors Brian Long Type: Article
Issue 2 : July 1995 View article View source code
Summary Brian Long shows how to customise your windows and controls using various subclassing techniques
Keywords Building components; Deriving objects; FreeObjectInstance; FreeProcInstance; MakeObjectInstance; MakeProcInstance; Message handlers; OnMessage; PostMessage; ProcessMessages; SendMessage; SetWindowLong; Subclassing; TMessage; Windows API; Windows messages

Back to top


Under Construction:Tic-Tac-Toe
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 2 : July 1995 View article View source code
Summary Bob Swart's component-building column focusses on encapsulating DLLs into Delphi components, by means of a tic-tac-toe game example (better known to British readers as noughts-and-crosses!)
Keywords Building components; Component expert; Component properties; DLL Import units; DLLs; Encapsulating DLLs; Exceptions; Explicit DLL import; Implicit DLL import; LoadLibrary; Tic-Tac-Toe; Under Construction column

Back to top


Moving Up: Visual Basic
Authors Dave Jewell Type: Article
Issue 2 : July 1995 View article No source code
Summary Dave Jewell with helpful advice for those moving to Delphi from VB
Keywords Variant records; Visual Basic

Back to top


Drag & Drop is Easy...
Authors Stuart Lunn Type: Article
Issue 2 : July 1995 View article View source code
Summary Stuart Lunn shows how to make your applications accept files dragged and dropped from Windows File Manager, with other handy tips along the way
Keywords DeleteMenu; Drag and Drop; DragAcceptFiles; DragQueryFile; DragQueryPoint; GetSystemMenu; HWND_TOPMOST; Icon on top; InsertMenu; ModifyMenu; SC_ICON; SetCharacteristics; SetWindowPos; ShellAPI; Start Iconized; Start as icon; System menu; WM_DROPFILES; WM_QUERYOPEN; WM_SYSCOMMAND; WindowState; Windows API; Windows messages

Back to top


Delphi Internals: Undocumented Secrets, Part 1
Authors Dave Jewell Type: Article
Issue 2 : July 1995 View article No source code
Summary Dave Jewell delves under the bonnet of Delphi to look at form resources and how to implement unions
Keywords Absolute; Delphi Internals column; Delphi forms; Form resources; Resource Workshop; Resource files; Sel variable; Undocumented; Unions

Back to top


Trim String functions
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 2 : July 1995 View article View source code
Summary How to trim strings
Keywords Strings; Trim function for strings

Back to top


Calling secondary forms
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 2 : July 1995 View article View source code
Summary How to call secondary forms
Keywords Calling forms; Forms; Hide for forms; Secondary forms; Show for forms

Back to top


Menu item separators
Authors Arjan Jansen Type: Clinic
Issue 2 : July 1995 View article View source code
Summary How to add menu item separators in the Menu Designer
Keywords Menu Designer; Menu separators; Menus

Back to top


Resizing columns of a TStringGrid
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 2 : July 1995 View article View source code
Summary How to resize columns in a TStringGrid
Keywords FixedCols; Resizing grid columns; TStringGrid

Back to top


Closing a form on starting an application
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 2 : July 1995 View article View source code
Summary Closing a form on starting an application
Keywords Closing forms; Forms

Back to top


Removing scroll bars from TDBGrid
Authors Brian Long Type: Clinic
Issue 2 : July 1995 View article View source code
Summary Removing scroll bars from TDBGrid
Keywords Removing scroll bars; Scroll bars; ScrollBars property; TDBGrid scroll bars

Back to top


Shelling out to another application
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 2 : July 1995 View article View source code
Summary How to shell out and call another application from a Delphi application.
Keywords Calling applications; HandleMessage; PeekMessage; Shelling out; WinExec; Windows API

Back to top


Editor Shortcuts
Authors Brian Long Type: Tip
Issue 2 : July 1995 View article View source code
Summary Shortcut keys for the Delphi code editor
Keywords Delphi IDE; Editor shortcuts; Keyboard shortcuts

Back to top


Customising the toolbar
Authors Nick Hodges Type: Tip
Issue 2 : July 1995 View article View source code
Summary How to customise the Delphi IDE toolbar
Keywords Custimising the Toolbar; Delphi IDE

Back to top


Smaller executable files
Authors Nick Hodges Type: Tip
Issue 2 : July 1995 View article View source code
Summary How to make your executable files smaller from the Delphi 1 IDE and using W8LOSS.EXE
Keywords Smaller EXE files; W8LOSS.EXE

Back to top


File utility routines
Authors Nick Hodges Type: Tip
Issue 2 : July 1995 View article View source code
Summary Where to find handy routines to copy, move and execute files
Keywords File copy; File execute; File move; File utility routines

Back to top


Passing variable numbers of parameters
Authors Hallvard Vassbotn Type: Tip
Issue 2 : July 1995 View article View source code
Summary How to write procedures and functions which can take a variable number of parameters using the TVarRec type
Keywords Parameter passing; Procedures and functions; TVarRec; Variable number parameters

Back to top


Exporting classes from DLLs
Authors Hallvard Vassbotn Type: Tip
Issue 2 : July 1995 View article View source code
Summary How to write DLLs which export Delphi classes
Keywords DLLs; Exporting classes from DLLs; Writing DLLs; abstract; cdecl; export; virtual

Back to top


WinCRT must appear last in the USES statement
Authors Hallvard Vassbotn Type: Tip
Issue 2 : July 1995 View article View source code
Summary To avoid error 85 "; expected" when using the WinCRT unit, ensure WinCRT appears last in your USES statement
Keywords USES; WinCRT; error 85

Back to top


TDBGrid bug: FixedColor is ignored
Authors Hallvard Vassbotn Type: Tip
Issue 2 : July 1995 View article View source code
Summary In Delphi 1 the FixedColor property does not work, this provides a fix
Keywords Delphi 1 bugs; FixedColor in TDBGrid; TDBGrid

Back to top


A Windows Desktop Canvas and Non-Client area Canvas
Authors Stefan Boether Type: Tip
Issue 2 : July 1995 View article View source code
Summary Implementation of a Canvas object for the Windows desktop area, which can be useful for screen savers, splash screens etc; plus a Canvas for a window's non-client area (for customising window frames).
Keywords Canvas; TCanvas; Window NC area; Window non-client area; Windows Desktop canvas

Back to top


Using RES bitmaps
Authors Stefan Boether Type: Tip
Issue 2 : July 1995 View article View source code
Summary How to load RES file bitmaps in Delphi
Keywords Bitmaps; Graphics; RES format bitmaps; TBitmap

Back to top


Smart IDE
Authors Stefan Boether Type: Tip
Issue 2 : July 1995 View article View source code
Summary Customising the Delphi IDE for faster operation on a laptop
Keywords COMPLIB.DCL; Delphi IDE; Laptop; Saving memory

Back to top


Clipboard Object
Authors Stefan Boether Type: Tip
Issue 2 : July 1995 View article View source code
Summary A clipboard object, TMemoClipboard, which supports Delphi's TStrings object type for passing long text over the Windows clipboard.
Keywords Clipboard; TClipBoard; TStrings

Back to top


Book Reviews
Authors Bob Swart (aka Dr.Bob) , Steve Troxell Type: Review
Issue 3 : September 1995 View article No source code
Summary Bob Swart and Steve Troxell review 'Delphi Programming Explorer' and 'Delphi Developer's Guide'
Keywords Book reviews; Delphi Developers Guide; Delphi Programming Explorer; Steve Teixeira; Xavier Pacheco

Back to top


Preview: 32-Bit Delphi
Authors Chris Frizelle Type: Article
Issue 3 : September 1995 View article No source code
Summary What you've all been waiting for! Chris Frizelle has details on what to expect in Borland's new version of Delphi for Windows95 and NT
Keywords 32 bit BDE; Delphi 2 preview

Back to top


Surviving Client/Server: Getting Started With SQL, Part 1
Authors Steve Troxell Type: Article
Issue 3 : September 1995 View article No source code
Summary Steve Troxell kicks off a brand new column for Client/Server developers with the first of a 2-part series on the basics of the SQL language
Keywords ISQL; InterBase; Interactive SQL; Joining tables; SQL; SQL Join; SQL operators; SQL transactions; SQL: Adding records; SQL: BETWEEN; SQL: COMMIT; SQL: DELETE; SQL: INSERT; SQL: LIKE; SQL: ORDER BY; SQL: ROLLBACK; SQL: SELECT; SQL: SET; SQL: Sorting; SQL: UPDATE; SQL: VALUES; SQL: WHERE; SQL: Wildcards; SQL: copying records; Surviving Client/Server

Back to top


Custom Clipboard Formats
Authors Xavier Pacheco Type: Article
Issue 3 : September 1995 View article View source code
Summary Xavier Pachero explains how to put anything you like onto the Windows clipboard
Keywords Clipboard; Custom clipboard formats; RegisterClipboardFormat; Streams; TClipboard; TMemoryStream; Windows API

Back to top


Under Construcion: Customising Controls
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 3 : September 1995 View article View source code
Summary Bob Swart shows how to derive new components from existing ones, using a right-aligned edit control as an example
Keywords Adding properties; Alignment of text; Building components; Component palette bitmaps; Deriving components; Hiding properties; Prevent control resizing; Private; Published; Resource Workshop; Right aligned TEdit; SetBounds; TCustom... components; Under Construction column

Back to top


Moving Up: C and C++
Authors Dave Jewell Type: Article
Issue 3 : September 1995 View article No source code
Summary Dave Jewell has some good advice for C/C++ developers trading up to Delphi
Keywords 32 bits; Allocating memory; C and C++; Conditional compilation; Converting C to Pascal; Count for ListBox; Create; CtoP C translator; DLL header conversion; Delphi for C programmers; Delphi for C++ programmers; Destroy; HeadConv expert; Huge pointers; ItemIndex; LB_SETCURSEL; Message handling; Porting 16 to 32 bits; Porting C to Pascal; Smart linking; WINDOWSX.H; WM_INITDIALOG; WinMain; Windows API; Windows messages; _hread; _hwrite; far declaration; implementation; interface; message cracker; pre-processor macros; static; unit

Back to top


Typecasting Explained: Part 1
Authors Brian Long Type: Article
Issue 3 : September 1995 View article View source code
Summary Brian Long sheds much-needed light on the subject of typecasting, which even causes experienced developers to trip up!
Keywords HiWord; LoWord; Offset; Ofs; Pointers; Random numbers; Randomize; Seg; Segment; Segmented memory; SysUtils unit; Tag; Typecasting; Variable typecasts; initialization

Back to top


Writing Your Own Experts
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 3 : September 1995 View article View source code
Summary Bob Swart shows that creating Delphi experts isn't that hard, as he takes us through the steps of building a DLL Skeleton Generator Expert
Keywords AddExitProc; Building DLLs; C DLL Header converter; COMPLIB.DCL; CloseProject; Compiling DLLs; DLL skeleton expert; DLLs; Delphi IDE; ExitProc; Experts; Exporting from DLLs; ExptIntf unit; GetComment; GetIDString; GetStyle; HeadConv; Installing experts; OpenProject; Project Experts; TIExpert; TOOLINTF unit; ToolServices; Using DLLS written in C; Writing experts; esEnabled; esForm; esProject; esStandard

Back to top


Delphi Internals: Through The Language Barrier
Authors Dave Jewell Type: Article
Issue 3 : September 1995 View article View source code
Summary Dave Jewell continues his explanation of creating DLLs with Delphi, showing how to put Delphi forms into DLLs which can then be called from other languages
Keywords Borland Pascal; C/C++; Calling Delphi DLLs from C; Calling Delphi DLLs from VB; Creating DLLs; DLLs; Delphi Internals column; FormCreate; Hiding forms; Library keyword; ModalResult; Null terminated strings; PChar; Putting forms into DLLs; ShowModal; StrNew; StrPas; TCalendar; Using DLLS; Visual Basic; exports keyword; implementation

Back to top


Painting to a device context
Authors Danny Thorpe Type: Clinic
Issue 3 : September 1995 View article View source code
Summary Tricks used by Delphi when painting to a Device Context
Keywords DC; Device context; Painting; Windows API

Back to top


Menu shortcuts
Authors Michael Williams Type: Clinic
Issue 3 : September 1995 View article View source code
Summary In Delphi 1 implementing menu shortcut keys sometimes didn't work. A fix is provided
Keywords Delphi 1 bugs; Menu shortcut keys; Menus; Menus unit; ShortCutToKey

Back to top


Navigating through forms
Authors Nick Hodges Type: Clinic
Issue 3 : September 1995 View article View source code
Summary How to navigate through forms in the Delphi IDE using F12 or the Form list
Keywords Delphi IDE

Back to top


Uses clause in a DLL source file
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 3 : September 1995 View article View source code
Summary A uses clause in a DLL source code file is not strictly necessary but not having one will cause a compilation error, which can be ignored
Keywords Building DLLs; DLLs; USES; Uses clause in DLL

Back to top


Turbo Debugger incorrect linker version
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 3 : September 1995 View article View source code
Summary Turbo Debugger 3.2 won't work with Delphi 1 -- use Turbo Debugger 4.6 from the RAD Pack or Borland C++ 4.51 or greater
Keywords Debugging; Incorrect linker version; Turbo Debugger

Back to top


How to make a window stay on top
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 3 : September 1995 View article View source code
Summary Using a form's fsStayOnTop property to make it stay on top of other windows
Keywords FormStyle; Making windows stay on top; Stay on top; Topmost window; fsStayOnTop

Back to top


Manipulating pixels in bitmaps
Authors Brian Long Type: Clinic
Issue 3 : September 1995 View article View source code
Summary Using a bitmap's Canvas to manipulate individual pixels
Keywords Canvas; Pixels property; TImage

Back to top


Popup menus
Authors Brian Long Type: Tip
Issue 3 : September 1995 View article View source code
Summary How do you find which component on a form caused a popup menu to appear? The PopupComponent property doesn't work properly..
Keywords KeyPreview; Popup menus; PopupComponent property

Back to top


Form designer: shortcut keys
Authors Tony McKiernan Type: Tip
Issue 3 : September 1995 View article View source code
Summary Moving controls on forms using Ctrl+cursor and Shift+cursor
Keywords Delphi IDE

Back to top


More editor shortcut keys
Authors Arjan Jansen Type: Tip
Issue 3 : September 1995 View article View source code
Summary More shortcut keys for the Delphi IDE editor
Keywords Delphi IDE; Editor shortcut keys

Back to top


Replacing if..then..else
Authors Brian Long Type: Tip
Issue 3 : September 1995 View article View source code
Summary How to replace clumsy if..then..else statements with clever typed constant constructs
Keywords if..then..else; typed constants

Back to top


Are we in range?
Authors Brian Long Type: Tip
Issue 3 : September 1995 View article View source code
Summary Using sets to check if a numeric value is within a required range
Keywords checking range; in keyword; sets

Back to top


Book Review: Delphi Unleashed
Authors Jeroen Pluimers Type: Review
Issue 4 : November 1995 View article No source code
Summary Jeroen Pluimers reviews Charlie Calvert's comprehensive Delphi guide
Keywords Book reviews; Charlie Calvert; Delphi Unleashed

Back to top


Inside TApplication
Authors Nick Hodges , Hallvard Vassbotn Type: Article
Issue 4 : November 1995 View article View source code
Summary Did You know all your Delphi programs have an extra zero sized window? Nick Hodges shows how to take advantage of TApplication's features, with extra tips from Hallvard Vassbotn too
Keywords Application; Application title; Cascade windows; CmdShow; ColorDialog; Command line; Component list; ComponentCount; CreateWindow; Drag and drop; DragAcceptFiles; EXEName; ExtractFileName; ExtractFilePath; FormCreate; FormStyle; HintColor property; Hints; HookMainWindow; Icon captions; Icon on top; Icon property; Message handling; NormalizeTopMosts; OnMessage event; OnMinimize event; ProcessMessages; RestoreTopMosts; SetWindowPos; ShowWindow; Stay on top; System unit; TApplication; Terminated; Tile windows; UnHookMainWindow; WM_WindowPosChanging; WinProcs unit; WindowState; Windows API; Windows messages; fsStayOnTop; wm_DropFiles; wm_Paint

Back to top


Surviving Client/Server: Getting Started With SQL, Part 2
Authors Steve Troxell Type: Article
Issue 4 : November 1995 View article No source code
Summary Steve Troxell continues his column with the second part of his explanation of the basics of SQL
Keywords SQL; SQL: AVG; SQL: COUNT; SQL: DISTINCT; SQL: GROUP BY; SQL: HAVING; SQL: MAX; SQL: MIN; SQL: ORDER BY; SQL: SUM; SQL: UNION; SQL: aggregate functions; SQL: duplicate rows; SQL: grouping data; SQL: limiting groups; SQL: select unique records; SQL: sorting; SQL: unions; Surviving Client/Server

Back to top


Under Construction: Component Help
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 4 : November 1995 View article View source code
Summary Bob Swart shows how to integrate help for developers using your compoents into Delphi's multihelp environment
Keywords Building components; Creating Windows Help; Creating component Help; DLL wrappers; DLLs; Encapsulating DLLS; Encoding binary files; Help files; Help keywords; KWGEN utility; UUDecode; UUEncode; Under Construction column

Back to top


Typecasting Explained: Part 2
Authors Brian Long Type: Article
Issue 4 : November 1995 View article View source code
Summary This time Brian Long covers message crackers, safe object typecasting and assembler typecasting
Keywords 32 bits; AS keyword; Assembler; BIOS data; BIOSCounter property; Delegation; GetBIOSCounter; IS keyword; Mem, MemW, MemL; Message crackers; Message handling; Msg message number; OnActivate; Reading directly from memory; Sender; TMessage; TMinMaxInfo; TObject; Timer; Typecasting; Typecasting objects; WM_GetMinMaxInfo; WParam and LParam; Win32; Windows API; Windows messages

Back to top


Customised Logins
Authors Xavier Pacheco Type: Article
Issue 4 : November 1995 View article View source code
Summary Xavier Pacheco explains how to customise Delphi's database login features to give your applications that extra zing!
Keywords BDE configuration; Customised database logins; Database; InterBase; LogOff and LogOn again; Login dialog; LoginDlg; LoginParams; LoginPrompt; OnLogin event; TDatabase; TDataset

Back to top


Delphi Internals: Moving Up to 32-Bits
Authors Dave Jewell Type: Article
Issue 4 : November 1995 View article View source code
Summary Dave Jewell shows how to get your code ready for Delphi32, and even start making Windows 95's 32-bit calls with 16-bit Delphi!
Keywords 32 bit code in Delphi 1; 32 bits; ANSIChar; AnsiString; Asssember; Call32NT; Cardinal; Char; Delphi 1 to Delphi 2; Delphi Internals column; Generic thunk; H+ compiler directive; PolyBezier; Porting to 32 bits; SetLength; ShortString; SmallInt; Stack layout; String; Thunking; WideChar; WideString; lParam; wParam

Back to top


Please Call Later...
Authors Brian Long Type: Article
Issue 4 : November 1995 View article View source code
Summary The first of a three-part series from Brian Long which aims to illuminate the mysteries of callbacks in Windows and the Borland Database Engine
Keywords BDE; BDE callbacks; Callbacks; Callbacks in DLLs; DLLs; DPMI; EnumChildWindows; EnumWindows; Finding all the windows; Finding child windows; Fixed segments; FreeProcInstance; GPF; GetProcAddress; Interrupt handlers; InterruptRegister; Interrupts; K+ compiler directive; MMSYSTEM; MakeProcInstance; Multimedia library; NotifyRegister; Protected mode; Real mode; Real mode interrupts; ShowMessage; Smart callbacks; SysUtils unit; Thunking; Timers; ToolHelp; Trapping GPFs; Windows API; dbiRegisterCallback; stdcall; timeSetEvent

Back to top


Performance Optimisation
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 4 : November 1995 View article View source code
Summary Bob Swart is well known as an expert in making applications go faster; this is the first of a three-part series in which he reveals his secrets...
Keywords Accurate timers; Algorithms; BTree; Binary search; Bubble sort; Compiler options; Data structures; Delphi IDE; Efficiency; GetTickCount; Linker options; Optimising code; Performance optimisation; Quick Sort; Searching; Sorting; Speed; TDirectoryOutline; Timing code; Turbo Profiler

Back to top


Left padded strings
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Left zero fill for a numeric string
Keywords Left padded strings; Left zero fill for numbers

Back to top


Error 200: published not allowed in this class
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Class requires $M+ compiler directive if it is to have published parts
Keywords $M+ compiler directive; Building components; Error 200; RTTI; Run time type information; published

Back to top


Exception handling
Authors Nick Hodges Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Exception handling: use of Break on Exceptions option in Options|Preferences|Environment page in the IDE
Keywords Break on except option; Delphi IDE; Exception handling; Exceptions

Back to top


Removing pages from the component palette
Authors Mike Orriss Type: Clinic
Issue 4 : November 1995 View article View source code
Summary How to remove pages from the component palette
Keywords Component palette; Delphi IDE; Removing palette pages

Back to top


Initialization section for unit startup code
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Initialization section for unit startup code
Keywords Initialization; Unit startup code

Back to top


Changing Cursors
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary How to change the mouse cursor
Keywords Changing cursors; Cursors; Mouse cursor; crHourGlass

Back to top


Accelerator keys
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Accelerator keys don't respond to Alt key
Keywords Accelerator keys

Back to top


Extracting icons from programs and DLLS
Authors Nick Hodges Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Sample code to extract an icon from a program or DLL
Keywords DLLS; Extracting icons; Icons

Back to top


Re-reading directory using FileListBox
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Forcing FileListBox to re-read a directory
Keywords FileListBox; Re-reading directory

Back to top


Using RC files
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Linking an RC file into an executable
Keywords $R compiler directive; Linking resource files; RC resource files

Back to top


Placing objects into a StringGrid
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Placing objects into a StringGrid
Keywords TStringGrid

Back to top


Calculating difference between 2 dates
Authors Bob Swart (aka Dr.Bob) Type: Clinic
Issue 4 : November 1995 View article View source code
Summary Calculating difference between 2 dates
Keywords Date arithmetic; Date differences; Dates

Back to top


Windows Resource Li mits
Authors Roy Nelson Type: Tip
Issue 4 : November 1995 View article View source code
Summary How to overcome problems of exceeding available Windows resources, usually evidenced by the "Error creating window" message
Keywords DestroyHandle; EOutOfResources; Error creating window; GetFormImage; MDI applications; Maximum number of windows; TTabbedNotebook; Windows API; Windows resource limits

Back to top


Arrays over 64Kb in Delphi 1
Authors Brian Long Type: Tip
Issue 4 : November 1995 View article View source code
Summary How to create arrays larger than 64Kb in Delphi 1
Keywords 64Kb variable size limit; Arrays; Huge arrays

Back to top


Hiding the Titlebar
Authors Claus Ziegler Type: Tip
Issue 4 : November 1995 View article View source code
Summary How to show and hide a window titlebar when an application is running
Keywords BorderStyle; GetWindowLong; SetWindowLong; Titlebar: show and hide; Windows API

Back to top


Creating Paradox auto-increment fields
Authors Stephen Thomspon Type: Tip
Issue 4 : November 1995 View article View source code
Summary Using a TQuery to create a Paradox table containing auto-increment fields
Keywords Auto increment fields; Paradox tsble; SQL; SQL: CREATE INDEX; SQL: CREATE TABLE; TQuery

Back to top


Update: Custom Clipboard Formats
Authors Xavier Pacheco , Hallvard Vassbotn Type: Article
Issue 4 : November 1995 View article View source code
Summary An update to Xavier Pacheco's article in Issue 3, courtesy of Hallvard Vassbotn with some minor corrections.
Keywords Clipboard; Custom clipboard formats

Back to top


Delphi 2.0: 32-Bit BDE Overview
Authors Chris Frizelle Type: Article
Issue 5 : January 1996 View article No source code
Summary Details of some more goodies in the 32-bit version of Delphi!
Keywords 32-bit; BDE; Database

Back to top


Using Resource Files In Delphi
Authors Dave Bolt , Ken Otto , Brian Long Type: Article
Issue 5 : January 1996 View article View source code
Summary Dave Bolt uncovers the mysteries of using bitmaps, icons and cursors; Ken Otto chips in on creating custom cursors and Brian Long adds a note on using resources by number rather than name
Keywords $R compiler directive; Animated cursor; Animation; BMP files; Bitmaps; Creating cursors; Cursors; Custom cursors; EFOpenError; Icons; Image Editor; LoadBitmap; LoadCursor; LoadIcon; RC files; RES files; Resource files; Resource numbers; Resource scripts; TImage; WM_NCMOUSEMOVE; Windows API; Windows messages

Back to top


A Screen Capture Utility
Authors Stuart Lunn Type: Article
Issue 5 : January 1996 View article View source code
Summary Stuart Lunn takes us through this example project, illustrating some very handy techniques along the way
Keywords BitBlt; Bitmaps; Cliboard: images; Clipboard; Cursors; Device context; GetDC; GetDesktopWindow; GetSystemMetrics; GetWindowDC; Inverting bitmaps; Inverting colours; Mouse handlers; Rubber banding; Screen capture; Windows API; Windows desktop

Back to top


Typecasting Explained: Part 3
Authors Brian Long Type: Article
Issue 5 : January 1996 View article View source code
Summary Brian Long concludes his series by looking at how safe typecasting can make an example project easier to code and more efficient too: a database table viewer
Keywords $R compiler directive; Forms as resources; Initialising variables; Linking resources; RC files; Resource files; Resource scripts; Typecasting; Typed constants

Back to top


Surviving Client/Server: TTable vs TQuery
Authors Steve Troxell Type: Article
Issue 5 : January 1996 View article View source code
Summary Which is best for your project? - Steve Troxell has all the details to help you make an informed decision
Keywords Client/Server; Dynamic SQL; Generating SQL; Modifiable data sets; Parameterized queries; RequestLive; SQL; SQL prepare; Surviving Client/Server; TQuery; TTable; TTable versus TQuery; Table navigation; Unidirectional

Back to top


Under Construction: Custom Events
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 5 : January 1996 View article View source code
Summary Bob Swart describes how to add custom events and event handlers to your components
Keywords Building components; Custom events; Event handlers; Event signallers; Message handling; TNotifyEvent; UUEncode & UUDecode; Under Construction column; WM_SETCURSEL; Windows API; Windows messages

Back to top


Please Call Later...
Authors Brian Long Type: Article
Issue 5 : January 1996 View article View source code
Summary The second of a three-part series from Brian `Long showing how to use Windows and BDE calbacks
Keywords BDE; BDE Help file; BDE callbacks; Callbacks; DBIERRS.INT; DBIPROCS.INT; DBITYPES.INT; Database; DbiRegisterCallback; FreeProcInstance; MakeProcInstance; MessageDlg and callbacks; PostMessage / SendMessage; SendMessage; ShowMessage and callbacks; TCallBack; Table changed callback; Thunking; Thunks; WindowState; Windows API; cbTableChanged

Back to top


Delphi Internals: CPU Type
Authors Dave Jewell Type: Article
Issue 5 : January 1996 View article View source code
Summary Build a component to identify current and future CPU types with Dave Jewell
Keywords 80386, 80486; Assembler; CPU type; CPUID instruction; Delphi Internals column; GetWinFlags; Intel processor documents; Pentium; Pentium Pro; Processor identification; Windows API

Back to top


Review: Eschalon Power Controls
Authors Dave Jewell Type: Review
Issue 5 : January 1996 View article No source code
Summary
Keywords Eschalon power controls; Reviews

Back to top


Book Review: Delphi How-To
Authors Steve Troxell Type: Review
Issue 5 : January 1996 View article No source code
Summary
Keywords Book reviews; Delphi How-To; Gary Frerking

Back to top


Performance Optimisation
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 5 : January 1996 View article View source code
Summary Bob Swart continues his series on supercharging your Delphi applications
Keywords Assembler; BASM; Built in assembler; Callbacks; DLLs; Dynamic methods; Efficiency; Encoding binary files; Exception handling; Exceptions; Exceptions and performance; InLine macros; Linking external assember; LoadLibrary; Loading DLLs; OBJ files; Open arrays; Performance Optimisation; RTTI; Run time type information; UUDecode; UUEncode; Using DLLs; Virtual methods; W8LOSS

Back to top


Review: Orpheus
Authors Dave Jewell Type: Review
Issue 5 : January 1996 View article No source code
Summary
Keywords Data entry controls; Data validation; Formatted data entry; Orpheus; Reviews; TurboPower

Back to top


Radio group focus
Authors Brian Long Type: Clinic
Issue 5 : January 1996 View article View source code
Summary How to set focus to radio buttons within a radio group
Keywords ActiveControl; Radio button focus; Radio group; SetFocus

Back to top


Drag and drop onto DBGRid cells
Authors Brian Long Type: Clinic
Issue 5 : January 1996 View article View source code
Summary How to drag and drop values onto DBGrid cells
Keywords DBGrid; Drag and drop; Drag and drop to TDBGrid; Drag and drop to TStringGrid; TStringGrid

Back to top


256 colour images
Authors Brian Long Type: Clinic
Issue 5 : January 1996 View article View source code
Summary Bugs displaying 256 colour images using TImage
Keywords 256 colours; Bitmaps; Stretch; Timage and 256 colours

Back to top


Implementing generic Cliboard support
Authors Brian Long Type: Clinic
Issue 5 : January 1996 View article View source code
Summary How to implement clipboard support across a number of different controls
Keywords Clipboard; Generic clipboard support

Back to top


Control arrays
Authors Mark Mamone Type: Tip
Issue 5 : January 1996 View article View source code
Summary How to implement Visual Basic style control arrays in Delphi
Keywords Control arrays; Visual Basic

Back to top


256 colour bitmaps
Authors Brian Long Type: Tip
Issue 5 : January 1996 View article View source code
Summary Loading a 256 colour bitmap from a resource
Keywords 256 colour bitmaps; Bitmaps; LoadFromStream; Resource files; Streams; TBitmap; TBitmapFileHeader

Back to top


Extending TMenu so it can add menu items automatically
Authors Michael Ax Type: Tip
Issue 5 : January 1996 View article View source code
Summary Extending TMenu so it can add menu items automatically
Keywords Adding menu items; Menus; TMenu

Back to top


Processing multiple selections in a listbox
Authors Margot Nelson Type: Tip
Issue 5 : January 1996 View article View source code
Summary Processing multiple selections in a listbox
Keywords ExtendedSelect; Listbox; MultiSelect; Multiple selection in listbo; TListbox

Back to top


Reading database records fast
Authors Hallvard Vassbotn Type: Tip
Issue 5 : January 1996 View article View source code
Summary How to read a block of records from a table in one go to enhance performance
Keywords BDE; Database; DbiErrs unit; DbiGetField; DbiProcs unit; DbiReadBlock; DbiTypes unit; Reading blocks of records

Back to top


Correct handling of WM_EndSession
Authors Hallvard Vassbotn Type: Tip
Issue 5 : January 1996 View article View source code
Summary Problems with tables not being closed correctly and Paradox lock files not being deleted can be due to incorrect handling by Delphi of the Windows WM_EndSession message
Keywords HookMainWindow; HookWindow; Lock files not deleted; Message handling; Paradox lock files; TApplication; Table not closed; WM_EndSession; WM_QueryEndSession; WM_Quit; Windows API; Windows messages

Back to top


Simpler PChars
Authors Brian Long Type: Tip
Issue 5 : January 1996 View article View source code
Summary A simpler way of implementing PChar types (null terminated strings)
Keywords Null terminated string; PChar; Simpler PChar

Back to top


File Handling
Authors Brian Long Type: Article
Issue 6 : February 1996 View article View source code
Summary Brian Long kicks off a series on working with files in Delphi with a run-down of some of the basics you'll need
Keywords Assign and AssignFile; BlockRead; BlockWrite; ExistFile; File buffer; File handling; File of ...; File records; File variables; Flush; Read file records; Reset; Rewrite; Seek; SetTextBuffer; System unit; Text and TextFile; Text file buffer; Typed files; Untyped files; Write file records

Back to top


Under Construction: Property Editors
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 6 : February 1996 View article View source code
Summary Bob Swart shows how to add custom property editors to your components, finishing up with a new image property editor you can plug straight into Delphi
Keywords Building components; DsgnIntf unit; Encoding binary files; GetAttributes; Property editors; RegisterPropertyEditor; TEnumProperty; TPictureEditor; TPropertyAttributes; TPropertyEditor; Tools API; UUdecode; UUencode; Under Construction column; paAutoUpdate; paDialog; paMultiSelect; paReadOnly; paSortList; paSubProperties; paValueList

Back to top


Enhanced VBX Support
Authors Stephen Posey Type: Article
Issue 6 : February 1996 View article View source code
Summary Stephen Posey describes how to get more out of Delphi 1.0x's support for VBX controls
Keywords ChartFX; Enhanced VBX support; TVBXControl; Using VBXs; VBX controls

Back to top


Surviving Client/Server: Stored Procedures Part 1
Authors Steve Troxell Type: Article
Issue 6 : February 1996 View article View source code
Summary Steve Troxell begins a two-part examination of using SQL stored procedures and triggers in your client/server applications
Keywords Client/Server; Data security; ExecProc; Interbase; Open; ParamByName; Params; Prepare for SQL query; SQL; SQL: EXECUTE PROCEDURE; SQL: stored procedures; Security; Stored procedures; Surviving Client/Server; TStoredProc; Triggers; Unprepare for SQL query

Back to top


Please Call Later...
Authors Brian Long Type: Article
Issue 6 : February 1996 View article View source code
Summary The concluding part of Brian Long's series showing how to use Windows and BDE callbacks
Keywords Callbacks; EnableExceptionHandler; InterruptRegister; LocalAlloc; Memory allocation; NotifyRegister; NotifyUnRegister; OutputDebugString; SetMenu; SysUtils unit; TFaultHandler; TFaultResponse; TNfyLogParamError; Thunking; Thunks; ToolHelp DLL; Windows 95; Windows API; dhDebugHooked

Back to top


Private Investigations
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 6 : February 1996 View article View source code
Summary Everything you ought to know about private, public, protected and published declarations but couldn't find in the manual, ably explained by Bob Swart
Keywords Building components; Class; Component properties; Private keyword; Property keyword; Protected keyword; Public keyword; Published keyword

Back to top


Delphi Internals: How Not To Write An Operating System
Authors Dave Jewell Type: Article
Issue 6 : February 1996 View article View source code
Summary Dave Jewell starts assembling a set of useful system-level routines, beginning with floppy disk identification and volume labels
Keywords 32-bits; BIOS; CMOS data; DOS calls; DOS interrupts; Delphi Internals column; Disk drive; DiskSize; FCB; File Control Block; FindFirst; FindNext; GetMID; GetVolumeInformation; GlobalDOSAlloc; Identifying floppy disks; Identifying floppy drives; Intr; Long filenames; MIDINFO; SetMID; SetVolumeLabel; SysUtils unit; TSearchRec; Volume labels; WinDOS unit; Windows 95; Windows API; Windows NT

Back to top


Building TSmiley
Authors Nick Hodges Type: Article
Issue 6 : February 1996 View article View source code
Summary If you've been left behind in the component building revolution, get back to basics with Nick Hodges
Keywords Bitmaps; Building components; Component properties; Design time and run time; Event handlers; LoadBitmap; Mouse handlers; Property editors; RTTI; RegisterPropertyEditor; Run time type information; TComponentState; TMouseEvent; Windows API; property keyword

Back to top


Delphi Books: A Comparative Overview
Authors Bob Swart (aka Dr.Bob) , Steve Troxell Type: Review
Issue 6 : February 1996 View article View source code
Summary Bob Swart and Steve Troxell have evaluated 15 Delphi books so you can decide which are the best for your needs - we've even included a database app on the disk with all the reviews in!
Keywords Book reviews; Delphi 1 books overview

Back to top


Review: LightLib Images
Authors Chris Frizelle Type: Review
Issue 6 : February 1996 View article No source code
Summary We take a look at this image handling component library from DFL Software
Keywords BMP; DFL Software; GIF; Image handling library; JPG JPeg; LightLib Images; PCX; PNG; Reviews; Scanner support; Scanning; TGA; TIF; TWAIN

Back to top


DDE Server application and service names
Authors Brian Long Type: Clinic
Issue 6 : February 1996 View article View source code
Summary DDE Server application and service names
Keywords DDE; DDE Service name; DDE application name; DDEMAN unit; DDEMgr

Back to top


TDBLookUpCombo.OnClick event
Authors Brian Long Type: Clinic
Issue 6 : February 1996 View article View source code
Summary TDBLookUpCombo.OnClick event doesn't fire when you click on the drop down list
Keywords OnClick event; TDBLookUpComboBox

Back to top


Microsoft products and floating point
Authors Brian Long Type: Clinic
Issue 6 : February 1996 View article View source code
Summary Incompatibilities between Borland and Microsoft floating point implementation
Keywords DLLs; Floating point; Microsoft C/C++; Microsoft floating point; NDP stack; Visual Basic

Back to top


Calling a C DLL
Authors Brian Long Type: Clinic
Issue 6 : February 1996 View article View source code
Summary Calling a C DLL
Keywords Calling DLLs written in C; DLLs; Pass by reference; Pointers; const Pass by reference; var Pass by reference

Back to top


Setting properties en masse
Authors Brian Long , Roy Nelson Type: Clinic
Issue 6 : February 1996 View article View source code
Summary How to set the same property for multiple components
Keywords Properties; RTTI; Run time type information; TypInfo unit

Back to top


Tracing SQL statements
Authors Brian Long , Steve Axtell Type: Clinic
Issue 6 : February 1996 View article View source code
Summary How to trace the actual SQL statements send by a TTable component
Keywords BDE; IDAPI section WIN.INI; SQL; SQLTrace in WIN.INI; WIN.INI

Back to top


Error reading symbol file message
Authors Brian Long Type: Clinic
Issue 6 : February 1996 View article View source code
Summary Error reading symbol file message
Keywords Autosave options; Delphi IDE; Error reading symbol file; Symbol file

Back to top


Easter eggs, credit boxes...
Authors Brian Long Type: Clinic
Issue 6 : February 1996 View article View source code
Summary Easter eggs, credit boxes...
Keywords Credit lists; Delphi IDE; Easter eggs

Back to top


Enumerated and Set types
Authors Michael Ax Type: Tip
Issue 6 : February 1996 View article View source code
Summary Using enumerated and set types as an alternative to translation tables
Keywords Enumerated types; GetEnumName; Set types

Back to top


Using PChar types in components
Authors Michael Ax Type: Tip
Issue 6 : February 1996 View article View source code
Summary Using PChar types in components
Keywords Building components; PChar

Back to top


Object oriented table
Authors Michael Ax Type: Tip
Issue 6 : February 1996 View article View source code
Summary Object oriented table
Keywords Object oriented table

Back to top


Debugging TListbox and TComboBox lists
Authors Brandon Smith Type: Tip
Issue 6 : February 1996 View article View source code
Summary Debugging TListbox and TComboBox lists
Keywords Debugging TComboBox; Debugging TListbox; TComboBox; TListbox

Back to top


Customising forms using CreateParams
Authors Brian Long , Soenke Pries Type: Tip
Issue 6 : February 1996 View article View source code
Summary Customising forms using CreateParams
Keywords CreateParams; CreateWindow; Window style flags; Windows API

Back to top


TNotebook Page Backgrounds
Authors Stewart McSporran Type: Tip
Issue 6 : February 1996 View article View source code
Summary How to efficiently use a bitmap image as the background to a group of notebook pages
Keywords OnPageChanged; TNotebook; TNotebook page background

Back to top


Removing unnecessary code
Authors Stefan Boether Type: Tip
Issue 6 : February 1996 View article View source code
Summary Removing unnecessary code
Keywords Removing unnecessary code; TBevel; TLabel

Back to top


Building A Database Expert
Authors Marco Cant∙ , Bob Swart (aka Dr.Bob) Type: Article
Issue 7 : March 1996 View article View source code
Summary Marco Cantu and Bob Swart show how to build a 16- and 32- bit database expert
Keywords Building experts; Class references; Converting classes; CreateModule; Database; Database expert; DatabaseCount; Experts; File streams; GetStyle; GetTableNames; IsValidIdent; Memory streams; OnPageChanged; ReadComponentResFile; Session; Streaming forms; Streams; TFileStream; TIMemoryStream; TMemoryStream; TSession; ToolServices; Typecasting; Valid identifier; WriteComponentResFile

Back to top


File Handling: Part 2
Authors Brian Long Type: Article
Issue 7 : March 1996 View article View source code
Summary Brian Long covers error handling for file operations and shows how file and record locking is done
Keywords $I compiler directive; ERuntimeError; ErrorProc; Exception handling; Exceptions; File error handling; File handles; File handling; File locking; File sharing; File variable record; FileExists; FileMode values; I/O error handling; IOResult error values; LockTable; Long filenames; Record locking; Reset; SHARE.EXE; TFileRec; TTextRec

Back to top


Surviving Client/Server: Stored Procedures Part 2
Authors Steve Troxell Type: Article
Issue 7 : March 1996 View article View source code
Summary Steve Troxell concludes his look at SQL stored procedures and triggers
Keywords Cascading delete; Client/Server; ExecProc; ISQL; InterBase; InterBase script files; Multiple queries; Multiple row result sets; ParamByName; Params; SQL; SQL: CONNECT; SQL: CREATE PROCEDURE; SQL: FETCH; SQL: FOR ... DO; SQL: RETURNS; SQL: SET TERM; SQL: SUSPEND; SQL: stored procedures; Stored procedures; StoredProcName; Surviving Client/Server; TStoredProc

Back to top


Under Construction: Data-Aware Components
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 7 : March 1996 View article View source code
Summary Bob Swart shows how to build your own data-aware controls, using a control to play WAV sound data from BLOB fields as an example
Keywords Building components; Building data aware controls; Data aware WAV button; Data aware components; DataSet; LoadFromFile; Memory streams; MemoryStream; Multimedia; Sound files; Streams; TDataSource; TMemoryStream; Under Construction column; WAV files; Windows API; sndPlaySound

Back to top


Review: TOLEAutomationClient
Authors Micha Somers Type: Review
Issue 7 : March 1996 View article No source code
Summary Micha Somers explains OLE Automation and reviews a component from New Zealand which takes a good deal of the hard work out of implementing it in your own applications
Keywords MS Excel; MS Word; OLE Automation; OLE mirror classes; Reviews; TOleAutomationClient; Windows API; Word Basic; Word.Basic OLE object

Back to top


Delphi Intenals: Disk Serial Numbers & CD-ROMs
Authors Dave Jewell Type: Article
Issue 7 : March 1996 View article View source code
Summary Dave Jewell shows how to get and set disk serial numbers as well as identify CD-ROM drives
Keywords Assembler; CD ROM detection; CD: program running from?; DOS Interrupts; DPMI; Delphi Internals column; Disk serial number; Drive serial numbers; Floppy disk serial number; GetMid; GetVolumeInformation; GlobalDOSAlloc; Intr; MIDINFO; MSCDEX; Running from CD?; Security; Serial number; SetMid; Windows API

Back to top


Building A Joystick Component
Authors Ken Otto Type: Article
Issue 7 : March 1996 View article View source code
Summary Ken Otto explains how to interface joysticks with your Delphi applications using Windows' MMSYSTEM API
Keywords Building components; GlobalAlloc; GlobalLock; IBM Game Adaptor; Joystick interface; MMSYSTEM DLL; MultiMedia API; SND_ASYNC; Windows API; joyGetDevCaps; joyGetNumDevs; joyGetPos; joySetCalibration; sndPlaySound

Back to top


Review: Delphi RAD Pack
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 7 : March 1996 View article No source code
Summary Bob Swart evaluates Borland's add-on pack for Delphi 1.0 - just how useful is it in your daily development work?
Keywords Delphi RAD Pack; Resource Expert; Resource Workshop; Reviews; Turbo Debugger; VBX controls; Visual Solutions Pack

Back to top


YAST: Yet Another Stack Tracer!
Authors Hallvard Vassbotn Type: Article
Issue 7 : March 1996 View article View source code
Summary Hallvard Vassbotn delves deeply into your programs' operation to show how stack tracing can help in finding those really nasty bugs and presents a code unit you can plug straight in
Keywords Debugging; Stack dump; Stack frame; Stack tracing

Back to top


Review: Graphics Server And Light Lib Business
Authors Chris Frizelle Type: Review
Issue 7 : March 1996 View article No source code
Summary We put these two charting libraries for Delphi through their paces
Keywords Bits Per Second; Charting Libraries; DFL Software; Data-aware graphs/charts; Graphics Server; Graphing libraries; LightLib Business; Reviews

Back to top


Changing default size of windows in Delphi IDE
Authors Brian Long Type: Clinic
Issue 7 : March 1996 View article View source code
Summary Changing default size of windows in Delphi IDE
Keywords DELPHI.INI; Default IDE window size; Delphi IDE; Object Inspector

Back to top


TDBLookupList and TDBLookupCombo
Authors Brian Long Type: Clinic
Issue 7 : March 1996 View article View source code
Summary TDBLookupList and TDBLookupCombo need to be connected to a TTable not a TQuery
Keywords Database; TDBLookupCombo; TDBLookupList; TTable versus TQuery

Back to top


$C compiler directive to set segment attributes
Authors Brian Long Type: Clinic
Issue 7 : March 1996 View article View source code
Summary $C compiler directive to set segment attributes
Keywords $C compiler directive; MOVEABLE; PERMANENT; PRELOAD; Segment attributes

Back to top


Creating TField field objects programmatically
Authors Brian Long Type: Clinic
Issue 7 : March 1996 View article View source code
Summary Creating field objects programmatically without the Field Editor
Keywords Creating field objects; Dataset Designer; Fields Editor; TField

Back to top


Raising a number to a power
Authors Brian Long Type: Clinic
Issue 7 : March 1996 View article View source code
Summary Raising a number to a power
Keywords Exp; Power function; Raising a number to a power

Back to top


Windows file access denied error dialog
Authors Brian Long Type: Clinic
Issue 7 : March 1996 View article View source code
Summary How to disable Windows file error dialog box
Keywords File Access Denied dialog; File error dialog box; File sharing; FileMode; Windows API

Back to top


Toggling shift key states
Authors Brian Long Type: Clinic
Issue 7 : March 1996 View article View source code
Summary Toggling scroll lock, caps lock, num lock key states
Keywords Caps lock key; GetKeyboardState; Num lock key; Scroll lock key; SetKeyboardState; Windows API

Back to top


TLabel Enabled property
Authors Hallvard Vassbotn Type: Tip
Issue 7 : March 1996 View article View source code
Summary Setting TLabel Enabled property to False doesn't grey out the control.
Keywords Enabled property; FocusControl; FocusEnable; TLabel; TLabel Enabled property; Visible property

Back to top


Event chains in Delphi
Authors Stefan Boether Type: Tip
Issue 7 : March 1996 View article View source code
Summary Event chains in Delphi
Keywords AddExitProc; Event chains; Event handlers; ExitProc

Back to top


Surviving Client/Server: All About Aliases
Authors Steve Troxell Type: Article
Issue 8 : April 1996 View article View source code
Summary Steve Troxell explains how to use the TDatabase and TSession components to configure the BDE in your applications
Keywords Adding an Alias; AliasName; BDE; BDE Configuration Utility; Building DLLs; Client/Server; Commit; Connected; DLLs; Database; Database Aliases; Database DLLs; Database Login dialog; DatabaseName; DbiAddAlias; GetAliasNames; GetAliasParams; GetDriverParams; GetStoredProcNames; GetTableNames; IDAPI.CFG; Rollback; Session; StartTransaction; Surviving Client/Server; SystemTables; TDatabase; TSession; Transaction processing

Back to top


Structured Exception Handling
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 8 : April 1996 View article View source code
Summary Bob Swart gives the lowdown on Delphi's excellent error handling, showing how to use exceptions effectively in your own applications
Keywords Error handling; Except on ... do ...; Exception handling; Exceptions; OnException; Raise; Raising exceptions; TApplication; TExceptionEvent; Terminate; Try ... Except

Back to top


File Handling 3: File Handles
Authors Brian Long Type: Article
Issue 8 : April 1996 View article View source code
Summary Having covered file variables and error handling, Brian Long now turns to using handles to manipulate files in your applications, with details of all the associated routines
Keywords 32-bits; BlockRead; BlockWrite; Errors on record size; File handles; File handling; File seek constants; FileCreate; FileOpen; FilePos; FileSize; FileWrite; Files; GetFileSize; LockFileArea; LockFileVar; Packed records; Seek; SetLength; SysUtils unit; TFileRec; TTextRec; Typed files; Untyped files; WinDos unit; WinProcs unit; Windows API; Windows unit; Writing over 64Kb to file

Back to top


Under Construction: Component Editors
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 8 : April 1996 View article View source code
Summary Bob Swart describes how to make use of Delphi's built-in component editors and shows how to build your own too
Keywords Building components; Component editors; DSGNINTF unit; ExecuteVerb; GetComponentEditor; GetVerb; GetVerbCount; RegisterComponentEditor; TComponentEditor; Under Construction column

Back to top


Modelling Systems With Components
Authors Paul Warren Type: Article
Issue 8 : April 1996 View article View source code
Summary Paul Warren discusses how he used Delphi components to model decision trees and electronic circuits!
Keywords Building components; Decision trees; Electronic circuit model; Floating point properties; Modelling systems; Properties of Type Real; Property editors; Real type property editor

Back to top


Delphi Internals: Disk Formatting Basics
Authors Dave Jewell Type: Article
Issue 8 : April 1996 View article View source code
Summary Continuing his examination of disk fundamentals Dave Jewell explains what makes floppy disks tick and how to read and write to absolute sectors
Keywords 32-bits; Absolute disk read/write; Assembler; BPB; Bios Parameter Block; DOS calls; Delphi Internals column; DeviceIOControl; Disk formatting; Disk lock; Disk sectors; FAT; File allocation table; Floppy disks; GetMessage; Interrupt; Low level disk I/O; PeekMessage; Quick format; Read/write disk tracks; SHELL32.DLL; SHFormatDrive; Volume lock; Windows API

Back to top


Inside The BDE: Building A Data Dictionary
Authors Brandon Smith Type: Article
Issue 8 : April 1996 View article View source code
Summary Brandon Smith reveals some of the goodies inside the Borland Database Engine, building a handy data dictionary application for Delphi 1 along the way
Keywords Aliases; BDE; Creating DBF files; Creating dBase files; Creating databases; Creating fields; Creating tables; Data dictionary; Database; Database alias; Fields Editor; IDAPI; TBlobField; TDatabase; TField; TFloatField; TIntegerField; TSession

Back to top


A Delphi Bootstrap
Authors John Braga Type: Article
Issue 8 : April 1996 View article View source code
Summary John Braga describes how he overcame application and BDE configuration problems in developing a diary system for networked users
Keywords File sharing; Finding windows; Launching applications; Network; Network applications; Shared tables

Back to top


Review: Image Lib 1.3
Authors Chris Frizelle Type: Review
Issue 8 : April 1996 View article No source code
Summary ImageLib from Skyline Tools handles the loading, display, manipulation and saving of a multitude of bitmap formats, should it be on your wanted list?
Keywords AVI files; BMP; Bitmap libraries; GIF; Graphics; ImageLib 1.3; JPG JPeg; MID MIDI files; MOV files; Multimedia; PCX; PNG; Reviews; Scanning; SkyLine Tools; Sound files; TIF; TWAIN; Video files; WAV files; WMF

Back to top


What tasks are running?
Authors Brian Long Type: Clinic
Issue 8 : April 1996 View article View source code
Summary How to find out which tasks are running in Windows
Keywords Running programs; Running tasks; Windows API

Back to top


Intercepting keystrokes
Authors Brian Long Type: Clinic
Issue 8 : April 1996 View article View source code
Summary How to intercept keystrokes, eg trap the Enter key and treat it like a Tab key press
Keywords Enter key; Enter key as Tab key; GetKeyState; Intercepting keystrokes; KeyPreview; Keypresses; OnKeyPress; Tab key; Trapping keystrokes; Windows API

Back to top


Opening and closing maximised MDI children
Authors Brian Long Type: Clinic
Issue 8 : April 1996 View article View source code
Summary Opening and closing maximised MDI children
Keywords MDI; Maximised MDI children; WindowState

Back to top


Converting times to floats
Authors Brian Long Type: Clinic
Issue 8 : April 1996 View article View source code
Summary TTimeField and date arithmetic
Keywords Date arithmetic; Dates and times; TDateTime; TTimeField

Back to top


Bitmaps for brushes
Authors Brian Long Type: Clinic
Issue 8 : April 1996 View article View source code
Summary Setting up custom bitmap brushes
Keywords Bitmaps; Brushes; Custom brushes; TBitmap

Back to top


Examining the type and value of array elements
Authors Brian Long Type: Clinic
Issue 8 : April 1996 View article View source code
Summary How to examine the type and value of elements of an array passed to a function or procedure
Keywords TVarRec; Types of array elements; Value of array elements; Variant records

Back to top


Table locks
Authors Brian Long Type: Clinic
Issue 8 : April 1996 View article View source code
Summary Opening Paradox tables with table write locks
Keywords LockTable; Paradox tables; Printing bitmaps; StretchDIBits; StretchDraw; TLockType; Table locks; UnlockTable; Windows API

Back to top


Form name property
Authors Brian Long Type: Clinic
Issue 8 : April 1996 View article View source code
Summary Form's name property gives an empty string when read at run time in Delphi 1
Keywords Form name property

Back to top


Lost pointers when an application GPFs
Authors Goeran Forsstrom Type: Tip
Issue 8 : April 1996 View article View source code
Summary Using Try..Except to keep lost pointers when an application GPFs
Keywords Exception handling; GPF; Lost pointers

Back to top


I/O Error handling update
Authors Brian Long Type: Tip
Issue 8 : April 1996 View article View source code
Summary Update to I/O error handling for Brian's file handling series
Keywords 32-bits; I/O error 21; I/O error 3; I/O error handling Delphi 2; Win32

Back to top


Hints for modeless forms in DLLS
Authors Bob Swart (aka Dr.Bob) Type: Tip
Issue 8 : April 1996 View article View source code
Summary Including hints on modeless forms in DLLs
Keywords Creating DLLs; DLLs; HandleMessage; Hints; Idle method; Modeless forms in DLLs; ShowModal

Back to top


Is Delphi Running?
Authors Bob Swart (aka Dr.Bob) Type: Tip
Issue 8 : April 1996 View article View source code
Summary How to tell if Delphi is running
Keywords Component building; Delphi active?; ExptIntf unit; Is Delphi running?; ToolServices

Back to top


A Delphi scratchpad
Authors Michael Ax Type: Tip
Issue 8 : April 1996 View article View source code
Summary A coding scratchpad in the Delphi IDE
Keywords Delphi IDE; Scratchpad

Back to top


TDirectoryOutline bug
Authors Roberto De Marini Type: Tip
Issue 8 : April 1996 View article View source code
Summary FileList of TFileListBox not updated correctly when used with a TDirectoryOutline
Keywords FileList not updated; TDirectoryOutline bug; TFileListBox

Back to top


Indexing TParam objects ina TQuery.Params property
Authors Martin Humby Type: Tip
Issue 8 : April 1996 View article View source code
Summary Indexing TParam objects in a TQuery.Params property
Keywords Parameterised SQL; SQL; TParam; TQuery.Params

Back to top


File Handling 4: Streaming Objects
Authors Brian Long Type: Article
Issue 9 : May 1996 View article View source code
Summary Streams are a very powerful feature of object oriented programming and Brian Long shows how they can be easy too
Keywords Blob streams; CopyFrom; File handling; File streams; FileSeek; Files; LoadFromStream; Making objects streamable; Memory streams; Resource streams; SaveToStream; Seek; Streaming data; Streaming objects; Streams; TBlobStream; TFileStream; THandleStream; TMemoryStream; TResourceStream; TStream

Back to top


Performance Optimisation Part 3: 32 bits
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 9 : May 1996 View article View source code
Summary Bob Swart returns to the subject of making your applications go even faster with some handy hints on 32-bit specific issues for Delphi 2
Keywords 32-bit assembly; 32-bits; Assembler; Delphi 2; Delphi IDE; Efficiency; Exceptions; Linker options; Optimization; Performance optimisation; Project Options; Typecasting; Typecasting variants; Variants

Back to top


Custom Coder Utilities
Authors Stephen Posey Type: Article
Issue 9 : May 1996 View article View source code
Summary Make life easier for yourself by generating code automatically: Stephen Posey shows how with examples for class method skeletons and message boxes
Keywords Code generation; Code skeletons; Coding utilities; Message Box Designer; MessageBox; Window title

Back to top


Delphi Internals: Disk Formatting Continued...
Authors Dave Jewell Type: Article
Issue 9 : May 1996 View article View source code
Summary Dave Jewell promises that next time he'll have this finally all wrapped up!
Keywords BPB; Bios Parameter Block; DOS calls; Delphi Internals column; Detecting disk type; Detecting drive type; Disk formatting; Disk sectors; Disk tracks; Floppy disk; Formatting disk tracks; Media sensing; Windows API

Back to top


Under Construction: Components For Workgroups 1
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 9 : May 1996 View article View source code
Summary Bob Swart offers useful advice and utilities for component management in a Delphi team development environment
Keywords Building components; COMPLIB.DPR; CompLib project; Experts; Registering components; Shared component library; Shared experts; Sharing COMPLIB.DCL; Under Construction column; Workgroup development

Back to top


Type-Safe Lists
Authors Jim Cooper Type: Article
Issue 9 : May 1996 View article View source code
Summary Jim Cooper gives us the low-down on the TList class and shows how to create type-safe derivatives of it, ending up with a handy expert to automate the task!
Keywords Building experts; Creating experts; Custom lists; DSGNINTF unit; Experts; List building expert; TComponentList; TList; TStringList; Type safety

Back to top


Audio-Enabled Components
Authors Paul Warren Type: Article
Issue 9 : May 1996 View article View source code
Summary Paul Warren develops a WaveAudio player that allows you to embed sound right in your own components or applications: no more pesky .WAV files to ship (and your users to lose!)
Keywords Audio-enabled components; Building components; Building property editors; Linking sound into apps; Memory streams; Playing sounds; Property editors; Sound; Sound components; Sounds property editor; Streams; TMediaPlayer; TMemoryStream; WAV files

Back to top


Components Made Easier?
Authors Mike Orriss Type: Review
Issue 9 : May 1996 View article No source code
Summary Mike Orriss reviews two packages designed to make component development simpler: Component Developers Kit and Component Create
Keywords Building components; Component Create; Component Developers Kit; Component builders; Eagle Software; Potomac Document Software; Reviews

Back to top


Review:HyperTerp
Authors Dave Jewell Type: Review
Issue 9 : May 1996 View article No source code
Summary Dave Jewell evaluates this Pascal-like script language component
Keywords HyperAct Inc; HyperTerp; Interpreter; Reviews; Script component; Script languages; Scripting

Back to top


Book Review: The Revolutionary Guide to Delphi 2
Authors Chris Frizelle Type: Review
Issue 9 : May 1996 View article No source code
Summary
Keywords Book Reviews; Delphi 2 books; Revolutionary Guide Delphi 2

Back to top


Charts From Tables
Authors Rashid Ali Type: Article
Issue 9 : May 1996 View article No source code
Summary Rashid Ali describes how to graph data from database tables using the ChartFX VBX included with Delphi 1
Keywords ChartFX; Charts from database tables; TQuery

Back to top


Multimedia API: sndPlaySound
Authors Brian Long Type: Clinic
Issue 9 : May 1996 View article View source code
Summary Multimedia API: sndPlaySound
Keywords MMSYSTEM unit; Multimedia; Multimedia API; Playing sound files; WAV files; Windows API; sndPlaySound

Back to top


Ensuring a DOS application has terminated
Authors Brian Long Type: Clinic
Issue 9 : May 1996 View article View source code
Summary Ensuring a DOS application has terminated
Keywords Application terminated; Multi-user; Network; Semaphore files; Sharing files; WinExec

Back to top


OnExit and the lost Caret (text cursor)
Authors Brian Long Type: Clinic
Issue 9 : May 1996 View article View source code
Summary When switching back to an edit control from a dialog box the caret (text cursor) is lost
Keywords Focus; Lost caret; Lost text cursor; OnExit; Validation

Back to top


Error-Free Custom open file dialogs
Authors Brian Long Type: Clinic
Issue 9 : May 1996 View article View source code
Summary Creating custom file open dialogs using TDirectoryList, TFileListBox and TDriveComboBox
Keywords Custom file open dialog; EInOutError; File open errors; SetErrorMode; TDirectoryList; TDriveComboBox; TFileListBox; Trapping Windows file errors

Back to top


Multiple help files
Authors Brian Long Type: Clinic
Issue 9 : May 1996 View article View source code
Summary Specifying an application's Help file name
Keywords Application.HelpFile; FindClose; Help files

Back to top


Oracle SQL*NET 2 and SQL Links
Authors Steve Axtell , Brian Long Type: Clinic
Issue 9 : May 1996 View article View source code
Summary Oracle SQL*NET 2 and SQL Links
Keywords Delphi 1; Oracle SQL*NET 2; SQL Links

Back to top


Delphi 2 applications won't minimise correctly
Authors Brian Long , Roy Nelson Type: Clinic
Issue 9 : May 1996 View article View source code
Summary Delphi 2 applications won't minimise correctly if WindowState is set to wsMinimized
Keywords Delphi 2; Window Minimized; WindowState; wsMinimized

Back to top


Synchronised Listboxes
Authors Brian Long Type: Clinic
Issue 9 : May 1996 View article View source code
Summary Synchronising two listboxes
Keywords Listbox scrolling; Message handling; Synchronised listboxes; TListBox; WM_VScroll; Windows API; Windows messages

Back to top


Using strings as Case selectors
Authors Stephen Posey Type: Tip
Issue 9 : May 1996 View article View source code
Summary Using strings as Case selectors
Keywords Case; GetEnumValue; Strings as Case selectors; Windows API

Back to top


Changing printer parameters
Authors William Thorp Type: Tip
Issue 9 : May 1996 View article View source code
Summary Changing printer parameters: paper orientation, number of copies, paper size
Keywords DevMode; GetPrinter; GlobalLock; Number of copies printed; Paper size; Paper source; Printer parameters; PrinterIndex; Printing; TDevMode; Windows API

Back to top


Moving components to Delphi 2
Authors Paul Warren Type: Tip
Issue 9 : May 1996 View article View source code
Summary Moving components to Delphi 2: convert palette bitmap to 32 bit format!
Keywords 32-bits; Building components; Component palette bitmaps; Converting resources 32-bit; DCR file; Delphi 2; Unsupported 16 bit resource

Back to top


Packing Paradox tables
Authors Mike Orriss Type: Tip
Issue 9 : May 1996 View article View source code
Summary How to pack Paradox tables
Keywords BDE; Database; DbiDoRestructure; Packing Paradox tables; Paradox tables; TDatabase

Back to top


Replacing controls
Authors Mike Orriss Type: Tip
Issue 9 : May 1996 View article View source code
Summary An easy way to replace one type of control with another
Keywords Replacing controls

Back to top


MaxLength of DBEdit doesn't work
Authors Mike Orriss Type: Tip
Issue 9 : May 1996 View article View source code
Summary MaxLength of DBEdit doesn't work
Keywords DBEdit; MaxLength DBEdit

Back to top


Lost cursor after displaying dialogs
Authors Mike Orriss Type: Tip
Issue 9 : May 1996 View article View source code
Summary Lost cursor after displaying dialogs
Keywords Lost cursor; OnExit; ShowMessage

Back to top


Under Construction: Version Control Systems
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 10 : June 1996 View article View source code
Summary Bob Swart describes the development of his ViCiouS version control system, showing how you too can develop your very own VCS!
Keywords Building components; DELPHI.INI; Delphi VCS interface; EXPTINTF unit; Exception handling; Exceptions; GetIDString; Installing VCS; TIVCSClient; TOOLINTF unit; ToolServices; Under Construction column; VCSINTF unit; Version control systems; ViCiouS; Workgroup development

Back to top


Printing In Delphi: Introducing TPrinter
Authors Xavier Pacheco Type: Article
Issue 10 : June 1996 View article View source code
Summary Xavier Pacheco starts a new series on adding printing capabilities to your Delphi 2 applications with a run-down of the basics
Keywords AssignPrn; Bitmaps; Fonts; Page orientation; Page size; Paper orientation; Paper size; Printer capabilities; Printer resolution; Printers unit; Printing; Printing Bitmaps; Printing rich text; Printing text; RTF; Rich text format; TPrinter; TPrinter Canvas

Back to top


Surviving Client/Server: SQL Performance Tuning
Authors Steve Troxell Type: Article
Issue 10 : June 1996 View article No source code
Summary Steve Troxell shows how to make your client/server apps run at optimum speed
Keywords Client/Server; Clustered indexes; Cost-Based Optimizers; Indexes; Indices; InterBase; MS SQL Server; Optimisation; Query optimizers; SQL; SQL execution plans; SQL performance tuning; SQL queries; SQL tuning; SQL: NATURAL; SQL: SET STATISTICS; SQL: UPDATE STATISTICS; Surviving Client/Server

Back to top


Book Review: Borland's Official No-Nonsense Guide To Delphi 2
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 10 : June 1996 View article No source code
Summary
Keywords Book Reviews; Delphi 2 books; Michelle Manning; No Nonsense Guide Delphi 2

Back to top


File Handling 5: Streaming Components
Authors Brian Long Type: Article
Issue 10 : June 1996 View article View source code
Summary Amongst other things, Brian Long shows how to enable your programs to have an autosaving desktop
Keywords 32 bits; DFM files; Delphi 2; File Handling; File copy using streams; File copying; Files; Form files; LoadFromStream; Persistent objects; RTTI; ReadComponent; Run time resource streams; Run time type information; SaveToStream; Saving application status; Saving the desktop; Streaming components; Streams; TFileStream; TPersistent; TWriter; WriteComponentResFile

Back to top


Delphi Internals: Disk Formatting Completed
Authors Dave Jewell Type: Article
Issue 10 : June 1996 View article View source code
Summary The final instalment in Dave Jewell's marathon and there's an example program on the disk to prove it!
Keywords Boot sector; Callbacks; DOS calls; Delphi Internals column; Disk directory; Disk formatting; FAT; File Allocation Table; Floppy disks; Strings unit; WinDOS unit; Windows 95; Windows API; Windows NT

Back to top


Component Lists: TCollection And TCollectionItem
Authors Xavier Pacheco Type: Article
Issue 10 : June 1996 View article View source code
Summary Using a pie chart creator as an example, Xavier Pacheco shows how to build component lists using these components
Keywords Building components; Collections; Collections of components; Component lists; Property Editors; TCollection; TCollectionItem

Back to top


Implementation Of A Single Instance Class
Authors John Chaytor Type: Article
Issue 10 : June 1996 View article View source code
Summary John Chaytor shows how to ensure that no more than one instance of a class can be created in your applications
Keywords Building components; Class constructors; Class method constructor; Class methods; Creating a class only one; Deriving classes; Event handlers; Events; Single instance class

Back to top


Review: EMS Shareware Delphi Library on CD
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 10 : June 1996 View article No source code
Summary
Keywords Delphi Shareware; EMS Delphi CD; EMS Professional Shareware; EMS Shareware Library; Reviews

Back to top


Chasing Objectivity With TDBNavigator
Authors Robert Palomo Type: Article
Issue 10 : June 1996 View article View source code
Summary Sometimes object-oriented just isn't the way to go... Robert Palomo describes how he implemented a custom navigator control with BDE error checking
Keywords BDE; BDE error codes; DBCTRLS unit; Database; Database error handling; EDBEngineError; Extended TDBNavigator; Extending components; Inheritance; Object Orientation; TDBNavigator; Table navigator

Back to top


TOutline bug
Authors Brian Long Type: Clinic
Issue 10 : June 1996 View article View source code
Summary TOutline bug: spurious list out of bounds exception
Keywords Delphi 1 bugs; Delphi 2 bugs; List out of bounds; TOutline bug

Back to top


MinValue and MaxValue Bugs in MATH unit
Authors Brian Long Type: Clinic
Issue 10 : June 1996 View article View source code
Summary MinValue and MaxValue Bugs in MATH unit
Keywords MATH unit bugs; MaxValue bug; MinValue bug

Back to top


Autosizing TDBGrid
Authors Brian Long Type: Clinic
Issue 10 : June 1996 View article View source code
Summary How to make a DBGrid to automatically size itself so that no white space is left at the right
Keywords Automatically size DBGrid; BDE; DBGRid autosizing; Database; TDBGrid autosizing

Back to top


Prevent user adding new record in TDBGrid
Authors Brian Long Type: Clinic
Issue 10 : June 1996 View article View source code
Summary Prevent user adding new record in TDBGrid
Keywords BDE; DBGRid; Database; Prevent add new record; TDBGrid

Back to top


Reading a form's properties
Authors Brian Long Type: Clinic
Issue 10 : June 1996 View article View source code
Summary How to read a form's properties from a non-Delphi program
Keywords DFM files; Form files; Form properties

Back to top


Optimising TPaintBox painting
Authors Brian Long Type: Clinic
Issue 10 : June 1996 View article View source code
Summary Optimising TPaintBox painting by repainting only the changed portion of the graphic
Keywords Message handling; Optimising TPaintBox Paint; TGraphicControl; TImage; TPaintBox; TSpeedButton; TWinControl; Windows API; Windows messages; wm_Paint

Back to top


Restricting access to properties
Authors Brian Long Type: Clinic
Issue 10 : June 1996 View article View source code
Summary Restricting access to properties
Keywords Building components; Properties; Read only properties; Restricting property access; published

Back to top


General help page
Authors Brian Long Type: Clinic
Issue 10 : June 1996 View article View source code
Summary General help page
Keywords Adding Help; Context sensitive help; Help; Windows Help files

Back to top


Hiding TTabbedNotebook pages
Authors Brian Long , Roy Nelson Type: Clinic
Issue 10 : June 1996 View article View source code
Summary Hiding TTabbedNotebook pages
Keywords Disabling notebook pages; Hiding notebook pages; Showing notebook pages; TPageControl; TTabControl; TTabPage; TTabbedNotebook

Back to top


Packing dBase tables
Authors Richard Smith Type: Tip
Issue 10 : June 1996 View article View source code
Summary Packing dBase tables
Keywords BDE; DBF files; Database; DbiDoRestructure; DbiPackTable; Packing dBase tables

Back to top


Changing TEdit text in the OnChange event handler
Authors Bruno Sonnino Type: Tip
Issue 10 : June 1996 View article View source code
Summary Changing TEdit text in the OnChange event handler
Keywords OnChange event handler; TEdit text

Back to top


Reading text files as binary
Authors Mike Rogers Type: Tip
Issue 10 : June 1996 View article View source code
Summary Reading text files as binary
Keywords Files; Reading text files as binary; Text files

Back to top


Naming forms and units to prevent name clashes
Authors Tung Wai Yip Type: Tip
Issue 10 : June 1996 View article View source code
Summary Naming forms and units to prevent name clashes
Keywords Form and unit name clashes; Naming forms and units

Back to top


Unique values only in TDBLookUpCombo
Authors Mike Orriss Type: Tip
Issue 10 : June 1996 View article View source code
Summary Unique values only in TDBLookUpCombo
Keywords QBE queries; Query by example; TDBLookUpCombo; TDBLookUpCombo unique values; Using QBE as a TTable source

Back to top


Calling forms using a string variable whose value is form type
Authors Mike Orriss Type: Tip
Issue 10 : June 1996 View article View source code
Summary Calling forms using a string variable whose value is form type
Keywords Calling forms with string; Forms

Back to top


Changing a form's mode
Authors Mike Orriss Type: Tip
Issue 10 : June 1996 View article View source code
Summary Changing a form's mode
Keywords Changing form mode; Forms; OnStateChange; TDataSource

Back to top


Does a record have any empty fields?
Authors Mike Orriss Type: Tip
Issue 10 : June 1996 View article View source code
Summary Does a record have any empty fields?
Keywords BDE; Database; Empty fields

Back to top


Duplicating data from previous record
Authors Mike Orriss Type: Tip
Issue 10 : June 1996 View article View source code
Summary Duplicating data from previous record
Keywords Data entry; DataSource; Database; Duplicating previous record; OnDataChange; Shadow tables

Back to top


Beating The System: Thunking For Profit And Pleasure
Authors Dave Jewell Type: Article
Issue 11 : July 1996 View article View source code
Summary How to call 16-bit code in 32-bit Delphi 2 applications and vice-versa
Keywords 32-bit; Assembler; Beating The System column; COMMCTL32.DLL; CallProc32W; CallProcEx32; Calling 16-bit code in 32-bi; Calling DLLs; DLLs; Flat Thunk; FreeLibrary; FreeLibraryEx32; Generic Thunk; GetFocus; GetProcAddress; GetProcAddress32W; GetVDMPointer32W; GlobalFix; GlobalLock; GlobalMemoryStatus; InitCommonControls; KERNAL32.DLL; LoadLibrary; LoadLibraryEx32; QT_Thunk; SendMessage; TFarProc; Thunking; Thunks; Universal Thunk; Using DLLs; Win32s; Win95 Progress Bar in 16bit; Windows 95; Windows API; Windows NT

Back to top


File Handling 6: Text File Device Drivers
Authors Brian Long Type: Article
Issue 11 : July 1996 View article View source code
Summary Final installment of Brian's series on file handling, which describes how to use text file device drivers and also presents a handy debugging utility
Keywords AssignFile; AssignPrn; CloseFunc; Console mode; Debugging; Debugging utility; File error handling; File handling; Files; FlushFunc; I/O errors; InOutFunc; OpenFunc; SysUtils unit; TTextRec; Text file device drivers; TextFile; WinCRT

Back to top


Surviving Client/Server: InterBase or SQL Server?
Authors Steve Troxell Type: Article
Issue 11 : July 1996 View article No source code
Summary Borland InterBase and Microsoft SQL Server database servers compared
Keywords ANSI SQL92 Conformance; Database servers; Domains; InterBase; InterBase versus SQL Server; Record locking; SQL; SQL Server; Stored procedures; Surviving Client/Server; TTable versus TQuery; Table locking; Temporary tables; Transaction processing; Triggers

Back to top


Designing An Article Index Database System
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 11 : July 1996 View article View source code
Summary Bob describes the design and implementation of The Delphi Magazine's Article Index Database.
Keywords Article index database; Avoiding use of Alias; Calculated fields; Data design; Database; Database form expert; Designing database system; Joining tables; Referential integrity; SQL; SQL queries; SQL: OR bug?; SQL: ORDER BY; TQuery

Back to top


Review: BoundsChecker 4.0
Authors Dave Jewell Type: Review
Issue 11 : July 1996 View article No source code
Summary
Keywords BoundsChecker 4.0; Debugging; Delphi 2 debugging; Detecting memory leaks; Memory access checks; NuMega; Pointer checking

Back to top


Under Construction: What's New?
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 11 : July 1996 View article View source code
Summary Update on sharing a component library within a workgroup with new ideas and utilities
Keywords Building components; Sharing COMPLIB.DCL; Sharing component library; Under Construction column; Workgroup development

Back to top


Review: CADET
Authors Mike Orriss Type: Review
Issue 11 : July 1996 View article No source code
Summary
Keywords CADET; CASE tools; Creating tables; Data design; ObjectWare; Reverse engineering; Reviews

Back to top


Printing In Delphi: Printing To Scale
Authors Xavier Pacheco Type: Article
Issue 11 : July 1996 View article View source code
Summary Printing in Delphi using sensible units like centimetres and inches
Keywords 32-bits; Delphi 2; GetDeviceCaps; Mapping modes; Printing; Printing to scale; SetMapMode; TCanvas; WindowsAPI

Back to top


Book Review: Delphi Programming Problem Solver
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 11 : July 1996 View article No source code
Summary
Keywords Book Reviews; Neil Rubenkink

Back to top


Hooking Heapcheck
Authors Hallvard Vassbotn Type: Article
Issue 11 : July 1996 View article View source code
Summary Hallvard takes a little-documented and seemingly useless callback hidden away in Delphi 1 and turns it into a really useful heap debugging tool.
Keywords Assembler; Callbacks; Debugging; Heap memory; HeapCheck; HeapLimit; Memory allocation; Memory de-allocation; Memory leaks; Pointer checking; Windows API

Back to top


Paradox tables on a CD
Authors Brian Long , Roy Nelson Type: Clinic
Issue 11 : July 1996 View article View source code
Summary How to put Paradox tables onto a (read-only) CD-ROM
Keywords BDE; CD-ROM; Database; DbiGetSysConfig; Directory lock; Paradox; Paradox lock files; TSession

Back to top


Multi Record Objects: Using TDBCtrlGrid
Authors Brian Long Type: Clinic
Issue 11 : July 1996 View article View source code
Summary How to place TDBImage and TDBMemo controls into a Delphi 2 TDBCtrlGrid
Keywords Database; Delphi 2; Multi record objects; TDBCtrlGrid; TDBImage; TDBMemo

Back to top


Copying Tables
Authors Brian Long Type: Clinic
Issue 11 : July 1996 View article View source code
Summary How to copy tables using TBatchMove and create the required index files too
Keywords BDE; BatchMove; Copying index files; Copying tables; Creating index files; Database; TBatchMove

Back to top


Why is Delphi 2 so slow?
Authors Danny Thorpe , Brian Long Type: Clinic
Issue 11 : July 1996 View article View source code
Summary Why is Delphi 2 so slow?
Keywords 32-bit compiler; 32-bits; BDE; Delphi 2 is slow?; New DCU format; New unit file format; Windows 95; Windows NT

Back to top


DataList utility
Authors Glenn Shukster Type: Tip
Issue 11 : July 1996 View article View source code
Summary Example project inlcuded with Delphi 1 which shows tables, field names etc.
Keywords BDE; DataList; Database; Index files

Back to top


Determine if WAV audio is supported on a system
Authors Paul Warren Type: Tip
Issue 11 : July 1996 View article View source code
Summary Determine if WAV audio is supported on a system
Keywords Audio installed?; MMSYSTEM unit; Sound; WAV audio; waveOutGetNumDevs

Back to top


Project history list
Authors Rohit Gupta Type: Tip
Issue 11 : July 1996 View article View source code
Summary Add more projects to the Delphi IDE project history list
Keywords DELPHI.INI; Delphi IDE; Project history list

Back to top


Auto-increment off track
Authors Mike Orriss Type: Tip
Issue 11 : July 1996 View article View source code
Summary How to fix auto-increment fields which have got off track
Keywords Auto-increment fields; BDE; Database; Key violation error; Paradox

Back to top


Setting the cursor
Authors Ian Johnson Type: Tip
Issue 11 : July 1996 View article View source code
Summary How to set the mouse cursor throughout an application except for certain controls in an MDI application
Keywords Cursor; MDI applications; Mouse

Back to top


TDBGrid cell display
Authors Mike Orriss Type: Tip
Issue 11 : July 1996 View article View source code
Summary How to display something other than the field contents in a TDBGrid cell
Keywords Database; GetText; SetText; TDBGrid cell contents

Back to top


Adding indexes
Authors Mike Orriss Type: Tip
Issue 11 : July 1996 View article View source code
Summary Fixing Invalid Index/Tag Name errors when adding new indexes to database tables
Keywords AddIndex; Adding indexes; BDE; Database; Indexes; Invalid Index/Tag name; ixCaseInsensitive; ixCaseSensitive

Back to top


Using masks with TDBEdit
Authors Mike Orriss Type: Tip
Issue 11 : July 1996 View article View source code
Summary Using masks with TDBEdit to capitalise the first letter of each word typed
Keywords Capitalise; Masks; TDBEdit

Back to top


Ensuring no duplicates appear in a combobox
Authors Mike Orriss Type: Tip
Issue 11 : July 1996 View article View source code
Summary Ensuring no duplicates appear in a combobox
Keywords ComboBox; IndexOf; No duplicates in ComboBox

Back to top


Getting Form Coordinates
Authors Mike Orriss Type: Tip
Issue 11 : July 1996 View article View source code
Summary Getting Form Coordinates
Keywords Form coordinates; GetPlacement; Windows API

Back to top


Delphi 2 DeleteFile type mismatch error?
Authors Mike Orriss Type: Tip
Issue 11 : July 1996 View article View source code
Summary Delphi 2 DeleteFile type mismatch error?
Keywords DeleteFile in SysUtils; Deleting files; Delphi 2; FindClose in SysUtils; SysUtils unit; Type mismatch error; Windows API

Back to top


Beating the System: The Private life of a Winhelp File (Part 1)
Authors Dave Jewell Type: Article
Issue 12 : August 1996 View article View source code
Summary Dave loves delving inside the undocumented and this month he takes the lid off Windows Help files, showing how , by understanding the format, you can add extra functionality to your apps.
Keywords MVB format files; WHIFS; WinHelp file system; Windows Help files

Back to top


Windows 95 Tray Icons
Authors Marco Cant∙ Type: Article
Issue 12 : August 1996 View article View source code
Summary Marco Cant∙ shows how to build your own tray icon applications using System Resources examples.
Keywords Free memory; GlobalMemoryStatus; Hiding a taskbar icon; Hiding main window; SetForegroundWindow; Shell_NotifyIcon; Tray icon; Win32; Windows 95

Back to top


The Late Session
Authors John O'Connell Type: Article
Issue 12 : August 1996 View article View source code
Summary Inside the Borland Database Engine with John O'Connell, who has the low-down on sessions, both single and multiple, and how you can create your own in Delphi 1 and 2 applications.
Keywords BDE; Direct BDE calls; IDAPI; Multiple sessions; PARADOX.LCK; PDOXUSRS.LCK; Record locks; Session property; TDatabase.Close; TDatabase.Open; TSession; TUpdateSQL; Table locks; dbiCloseSession; dbiOpenSession; dbiSetCurrSession; dbiStartSession

Back to top


Book Review: Database Developer's Guide with Delphi 2
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 12 : August 1996 View article No source code
Summary
Keywords Book reviews; Ken Henderson

Back to top


Printing in Delphi: Printing an Invoice Report
Authors Xavier Pacheco Type: Article
Issue 12 : August 1996 View article View source code
Summary Xavier Demonstrates how you can have professional-looking fully formatted reports without using any add-on reporting tools.
Keywords Font sizes for printing; GetDeviceCaps; GetLineHeight; GetTextMetrics; Pixels per inch; PixelsPerInch error; Printer resolution; Printing; Printing reports; Printing: alignment; Printing: device independent; Printing: page margins; TEXTMETRIC; Win32

Back to top


Under Construction: A Hex Viewer and Editor
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 12 : August 1996 View article View source code
Summary Bob returns to component writing in this month's column, with a viewer and editor for binary files of up to 2Gb!
Keywords Binary files; Component building; Delphi 2 FileMode bug; Displaying Hexadecimal; Editing huge files; Editor; File sharing; File viewer; FileMode; Grids; Hex editor; Hex viewer; Paging algorithm; Property editors

Back to top


Calling 16-Bit Code from 32-bit in Windows 95
Authors Brian Long Type: Article
Issue 12 : August 1996 View article View source code
Summary Brian Long demonstrates how QT_Thunk can get your 16-bit code working in Delphi 2 applications (the techniques described complement Dave Jewell's column last month, which dealt with generic thunks)
Keywords C calling convention; Calling 16-bit from 32-bit; Flat thunk; Free memory; Free resources; FreeLibrary16; Generic thunk; GetFreeSystemResources; GetProcAddress; GetProcAddress16; GetThreadSelectorEntry; List 16-bit modules; List 16-bit tasks; LoadLibrary16; Locking memory; Memory locks; QT_Thunk; Quick Thunk; Stack frames; System resources; SystemHeapInfo; Thunk compiler; Thunking; Thunktion; ToolHelp; Universal thunk; WOWGetVDMPointer; Win32; Win32s; Windows 95; Windows NT; cdecl

Back to top


Using a text file device driver as a string parser
Authors Jon Jacobs Type: Article
Issue 12 : August 1996 View article View source code
Summary String parsing can be a real pain to implement but Jon shows how to make it really easy using a TFDD.
Keywords File flushing; File mode; File sharing; Parsing strings; String parsing; SysUtils; TTextRec; Text file device drivers

Back to top


Surviving Client/Server: Cached Updates
Authors Steve Troxell Type: Article
Issue 12 : August 1996 View article View source code
Summary Steve begins a tour of Delphi 2's new database-related features with this new performance enhancement option.
Keywords ApplyUpdates; Cached updates; CachedUpdates property; Client/Server; Modifying Read Only results; Result sets; Surviving Client/Server; TDataSet; TDatabase; TUpdateSQL; UpdateRecordTypes; UpdatesPending property

Back to top


What is the image base option?
Authors Brian Long Type: Clinic
Issue 12 : August 1996 View article View source code
Summary What is the image base option?
Keywords DLL memory location; ImageBase; Linker options; Writing DLLs

Back to top


Floating Point Inaccuracy
Authors Brian Long Type: Clinic
Issue 12 : August 1996 View article View source code
Summary Floating Point Inaccuracy
Keywords FLOAT fields; Floating point inaccuracy; InterBase; Precision property; Rounding errors

Back to top


InterBase BLOb SubTypes and segments
Authors Brian Long Type: Clinic
Issue 12 : August 1996 View article View source code
Summary InterBase BLOb SubTypes and segments
Keywords BLOb SubTypes; BLOb segments; InterBase

Back to top


Raw Printer Access
Authors Brian Long Type: Clinic
Issue 12 : August 1996 View article View source code
Summary Raw Printer Access
Keywords Escape; Printer driver PassThrough; Printing; Raw printer access; SpoolFile; Win32; Writing direct to printer

Back to top


Virtual and Override Clarification
Authors Brian Long , Allen Bauer , Danny Thorpe Type: Clinic
Issue 12 : August 1996 View article View source code
Summary Virtual and Override Clarification
Keywords Dynamic; Dynamic method table DMT; Early binding; Late binding; Message handling; Override; Polymorphism; Virtual; Virtual method table VMT

Back to top


Identifying 32-bit Windows Platforms
Authors Brian Long Type: Tip
Issue 12 : August 1996 View article View source code
Summary Identifying 32-bit Windows Platforms
Keywords Identifying Windows 95; Identifying Windows NT; Identifying platform; Win32

Back to top


ShowModal
Authors Richard Smith Type: Tip
Issue 12 : August 1996 View article View source code
Summary ShowModal
Keywords Creating modal forms; ShowModal

Back to top


Network Directory Exists
Authors Jaroslav Blaha Type: Tip
Issue 12 : August 1996 View article View source code
Summary Network Directory Exists
Keywords Directory exists; DirectoryExists; Network directory exists; Networking

Back to top


Execute and Wait
Authors Jaroslav Blaha Type: Tip
Issue 12 : August 1996 View article View source code
Summary Execute and Wait
Keywords Execute DOS program; Execute and wait; Semaphore files; WinExec

Back to top


Database Flushing
Authors Mike Pijl Type: Tip
Issue 12 : August 1996 View article View source code
Summary Database Flushing
Keywords BLOB has been modified error; Flush database; OnAfterPost for TTable; dbiSaveChanges

Back to top


Default Draw Data Cell
Authors Mike Pijl Type: Tip
Issue 12 : August 1996 View article View source code
Summary DefaultDrawDataCell
Keywords DBGrid cell custom format; DefaultDrawDataCell; Highlight DBGrid cells

Back to top


Digging into IDAPI Part 1
Authors John O'Connell Type: Article
Issue 13 : September 1996 View article View source code
Summary John O'Connel provides more insights into making direct calls to the BDE to enhance your database applications' capabilities and performance
Keywords BDE; BDE date format; BDE system status; BDE.INT; CursoPosChanged; DBIERRS.INT; DBIPROCS.INT; DBTYPES.INT; Database handle; Database property; Direct BDE calls; File sharing; IDAPI; IDAPI objects; IDAPI record structure; Locking; Multi user; Private directory; PrivateDir property; Record locks; Record number; Record number component; Sequence number Paradox; TSession; TStoredProc; TTable MoveBy; TTable Refresh; Table cursor position; Temporary TDatabase; UpdateCursorPos; dbiDateDecode; dbiExit; dbiGetCursorProps; dbiGetNetUserName; dbiGetNextRecord; dbiGetRecord; dbiGetRelativeRecord; dbiGetSeqNo; dbiGetSysInfo; dbiGetSysVersion; dbiGeySysConfig; dbiInit; dbiLockType; dbiOpenDatabase; dbiSetDirectory; dbiSetPrivateDirectory; dbiSetToRecordNo; dbiSetToSeqNo

Back to top


Cascading Exceptions
Authors Andrew McLellan Type: Article
Issue 13 : September 1996 View article View source code
Summary Andrew McLellan shows how to use Delphi's exception handling to build error handling systems which satisfy the needs of both end users and technical support departments.
Keywords Cascading exceptions; Creating new error class; Error handling; Error messages; Exception handling; Exceptions; OnException

Back to top


Surviving Client Server: Delphi 2.0 Potpourri
Authors Steve Troxell Type: Article
Issue 13 : September 1996 View article View source code
Summary Continuing his look at Delphi 2.o's new database features, this month Steve Troxell rounds off cached updates and covers filters and database dictionaries
Keywords Cached updates; Client/server; Data dictionary; Dataset filtering; Delphi 2 client/server; Delphi 2 data dictionary; FilterOptions property; Filtered property; Filtering records; Find and Find Next; FindFirst; FindLast; Incremental searches; ModifySQL property; OnFilterRecord event; OnUpdateRecord event; SQL; Searching with filters; Surviving Client/Server; TDataSet; TUpdateSQL; UpdateKind

Back to top


Data Validation Levels
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 13 : September 1996 View article View source code
Summary Bob Swart shows how to build data validation into your applications at input, field, record/table and dialog or application levels.
Keywords Data validation; Dialog/form validation; Edit masks; EditMask; Field validation; OnValidate; Record validation; Table validation

Back to top


An "Expert" Expert
Authors Paul Warren Type: Article
Issue 13 : September 1996 View article View source code
Summary Paul Warren thinks experts are wonderful, so he built an expert to create his own experts!
Keywords Building experts; CreateModule; ExpIntf; Expert to build experts; Experts; Open Tools API; Proxies; Proxy; TIExpert; ToolIntf

Back to top


Beating the System: The Private Life of A WinHelp File (Part 2)
Authors Dave Jewell Type: Article
Issue 13 : September 1996 View article View source code
Summary Dave Jewell continues trawling the depths of Windows Help files, this month explaining how thier data compression system works
Keywords Beating The System; Compression; Help compression; Help file; Length/distance encoding; Sliding window compression; WHIFS; Windows Help file format

Back to top


Under Construction: Delphi 2.0 AddIn Experts
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 13 : September 1996 View article View source code
Summary Delphi 2.0 has a new, fourth kind of expert and Bob Swart shows how to build your own, and there's even a bug-tracking expert on the free disk!
Keywords AddIn Experts; BERT; Building experts; DLL experts; Delphi 2.0; EXPTINTF; Error report database; Error report expert; Error tracking; Experts; TIExpert; TOOLINTF; Under Construction

Back to top


Review: Infopower 2.0
Authors Mike Orriss Type: Review
Issue 13 : September 1996 View article No source code
Summary Mike Orriss puts the new version of this popular database component toolbox through its paces
Keywords InfoPower 2.0; Reviews

Back to top


Book Review: Rapid Development by Steve McConnell
Authors Richard Stevens Type: Review
Issue 13 : September 1996 View article No source code
Summary Written by Steve McConnell reviewed by Richard Stevens
Keywords Book reviews; Steve McConnell

Back to top


File Handle Leak
Authors Brian Long Type: Clinic
Issue 13 : September 1996 View article View source code
Summary File Handle Leak
Keywords File handles; FileCreate; Rewrite

Back to top


Validation en Masse
Authors Brian Long Type: Clinic
Issue 13 : September 1996 View article View source code
Summary Validation En Masse
Keywords OnValidate; TDBedit; Validating multiple controls; Validation

Back to top


Enum As String
Authors Brian Long Type: Clinic
Issue 13 : September 1996 View article View source code
Summary Enum As String
Keywords Enumerated type as string; RTTI; Run time type information; TypInfo

Back to top


CPU Level Debugging
Authors Brian Long Type: Clinic
Issue 13 : September 1996 View article View source code
Summary CPU Level Debugging
Keywords Assembler generation; CPU level debugging; Debugging; Delphi 2.0; Registry; Windows 95

Back to top


Stop Splashing About
Authors Brian Long Type: Clinic
Issue 13 : September 1996 View article View source code
Summary Modifying the Splash Screen which shows during the load up process
Keywords /NS on command line; Delphi 2.0; No Delphi 2 splash screen

Back to top


Form-Wide OnMouseMove
Authors Brian Long Type: Clinic
Issue 13 : September 1996 View article View source code
Summary Form-Wide OnMouseMove
Keywords Mouse events all controls; OnMouseMove

Back to top


Default OLE Automation Property
Authors Brian Long Type: Clinic
Issue 13 : September 1996 View article View source code
Summary Default OLE Automation Property
Keywords OLE Automation; OLE Server default property; OLE dispatch ID

Back to top


Thunk Update
Authors Brian Long Type: Tip
Issue 13 : September 1996 View article View source code
Summary Thunk Update
Keywords Call 16-bit code in 32-bit; QT_Thunk; Thunking; Thunking with no assembler; Windows 95

Back to top


Automatic Initialisation And Finalisation
Authors Jim Cooper Type: Tip
Issue 13 : September 1996 View article View source code
Summary Automatic Initialisation And Finalisation
Keywords AddExitProc; Exit procedures; Finalization; Initialization; SysUtils; Unit finalisation; Unit initialisation

Back to top


Easy Word Wrapping
Authors Jim Cooper Type: Tip
Issue 13 : September 1996 View article View source code
Summary Easy Word Wrapping
Keywords DT_WORDBREAK; DrawText; Grids; Word wrapping

Back to top


One Last Compile...
Authors Type: Article
Issue 13 : September 1996 View article No source code
Summary A humorous look at Delphi training...
Keywords One Last Compile

Back to top


Language Extensions: Variants
Authors Xavier Pacheco Type: Article
Issue 13 : September 1996 View article View source code
Summary How to use the new Variant type in Delphi 2.0
Keywords Delphi 2; Dynamic data types; Garbage collection; Invalid variant operation; OLE Automation; TVarData; Typecasting variants; Variant arrays; Variant type; Variants; Variants and databases; Variants in expressions

Back to top


Book review: Building Internet Applications With Delphi 2
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 13 : September 1996 View article No source code
Summary
Keywords Book review; Davis Chapman; Internet

Back to top


Inheritance update
Authors Brian Long Type: Clinic
Issue 13 : September 1996 View article View source code
Summary Update on Issue 12 discussion of virtual, override and dynamic
Keywords Dynamic; Inheritance; Inherited; Overrride; Virtual

Back to top


Surviving Client/Server: Data Processing With Subqueries
Authors Steve Troxell Type: Article
Issue 14 : October 1996 View article No source code
Summary Steve Troxell shows how to exploit the flexibility of SQL's SELECT statement to build complex and powerful queries.
Keywords Client/server; Correlated subqueries; Data processing; Duplicate values in rankings; Ranking data; Ranking multiple sequences; SQL; SQL AVERAGE; SQL SELECT; SQL SELECT DISTINCT; SQL nested SELECT; Subqueries; Surviving Client/Server

Back to top


Customising TDrawGrid For Text Grids
Authors Steve Tung Type: Article
Issue 14 : October 1996 View article View source code
Summary Steve Tung demonstrates how you can use TDrawGrid to display text and gain useful flexibility along the way.
Keywords Cutomising grid cells; Drawing grid cell text; ExtTextOut; Grid cell text alignment; Merging grid cells; Mouse handling in grids; Multiple select grid cells; Sorting text grids; Splitting grid cells; TDrawGrid; TStringGrid; Text grids; Text in TDrawGrid

Back to top


Using Form Components With Delphi 1
Authors Rohit Gupta Type: Article
Issue 14 : October 1996 View article View source code
Summary Save time by re-using your forms in Delphi 1 with Rohit Gupta's simple to implement tricks.
Keywords Default form; Form components in Delphi 1; Re-using forms

Back to top


Digging into IDAPI part 2
Authors John O'Connell Type: Article
Issue 14 : October 1996 View article View source code
Summary John O'Connell gives us a roundup of cursor properties, including record bookmarks, table rights, un-deleting records, table copying and renaming, packing and re-indexing, completing the picture with an enhanced version of TTable with loads of new functionality.
Keywords BDE; Bookmarks; Copying tables; Deleted records; Deleting all records; Direct BDE calls; Emptying table; Enhanced TTable; File sharing; Flushing database changes; GetBookmark; GoToBookmark; IDAPI; IDAPI cursor properties list; Indexes; Maintained index; Multi user; Non-maintained index; Open tables count; Packing tables; Paradox field privileges; Paradox table passwords; Paradox table privileges; Rebuilding indexes; Renaming tables; Shared or exclusive table; TBookmark; TIndexDef; TTable enhancements; Table cursor properties; Table indexes; Table passwords; Table rights; Transaction handling; Un-deleting records; bBookmarkStable; bDeletedOn; dbiCompareBookmarks; dbiDoRestructure; dbiEmptyTable; dbiGetBookmark; dbiGetCursorProps; dbiGetIndexDesc; dbiGetTableOpenCount; dbiGetTranInfo; dbiIsTableShared; dbiOPENSHARED; dbiREADONLY; dbiRegenIndex; dbiRegenIndexes; dbiSaveChanges; dbiSetProp; dbiUseIdleTime; dbipackTable; eOpenMode

Back to top


File Search and Delete Tree
Authors David Selwood Type: Article
Issue 14 : October 1996 View article View source code
Summary Devid Selwood present some useful routines to delete a whole directory tree and search a directory tree for those elusive files your users have hidden!
Keywords Deleting directories; Deleting directory tree; Deleting files; FindFirst; FindNext; Finding files; Recursion; Recursive programming; Searching for files

Back to top


Under Construction: Testing And Debugging
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 14 : October 1996 View article No source code
Summary Bob Swart has some useful tips, techniques and guidelines for keeping your components bug-free and finding those few that slip through the net.
Keywords $APPTYPE CONSOLE; Component building; Component debugging; Component testing; ComponentState; Console applications; Debugging; Delphi 2 and NT 4.0 beta; Design; Design, run time behaviour; Detecting design time; Detecting run time; Error 202 in COMPLIB; Log files; Naming conventions; Object oriented design; Recursion; Stack overflow; Testing; Turbo Debugger; Under Construction; WinCRT; Windows NT 4.0; cdDesigning; reAct component debugger

Back to top


Printing in Delphi: Getting Printer Information
Authors Xavier Pacheco Type: Article
Issue 14 : October 1996 View article View source code
Summary Xavier Pacheco is back to unravel the secrets of obtaining details of printer capabilities.
Keywords Banding; DC_DRIVER; DeviceCapabilities; DeviceCapabilitiesA; DeviceCapabilitiesEx; DeviceCapabilitiesW; GDI32; GetDeviceCaps; GetPrinter; Getting printer information; Printer bins; Printer drivers; Printer fonts; Printer information; Printer paper size; Printer resolution; Printing; TDevMode; TPrinter; TrueType font support; WINSPOOL.DRV; Win32

Back to top


Beating the System: The Private Life Of a WinHelp File (Part 3)
Authors Dave Jewell Type: Article
Issue 14 : October 1996 View article View source code
Summary Dave Jewell wraps up his exploration of Help file innards with a discussion of the phrase data; there's a utility on the disk to completely decode Help files too!
Keywords Beating the System; Decompress help files; Disk formatting; Format disk; Help files; Help phrase file; SHFormatDrive; WHIFS; Win32; Windows 95; Windows Help File format

Back to top


Turbocharging Database Applications with TLists
Authors Jonathon Morgan Type: Article
Issue 14 : October 1996 View article View source code
Summary Jonathon Morgan shows how you can make your database applications zip along by transferring frequently referenced tables to TList structures
Keywords Database; Optimisation; Performance enhancement; TList; TList in database apps

Back to top


SysTools
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 14 : October 1996 View article No source code
Summary
Keywords SysTools; System functions; TurboPower Software

Back to top


And Do Dilly Dally On The Way
Authors Brian Long Type: Clinic
Issue 14 : October 1996 View article View source code
Summary And Do Dilly Dally On The Way
Keywords Delay; Sleep; Win32

Back to top


Changing Locations
Authors Brian Long Type: Clinic
Issue 14 : October 1996 View article View source code
Summary Changing Locations
Keywords Application window position; Initial window position; Position property; Positioning windows; Window location

Back to top


Tacky Termination
Authors Brian Long Type: Clinic
Issue 14 : October 1996 View article View source code
Summary Tacky Termination
Keywords Halt; Screen flicker; ShowMainForm; Terminate

Back to top


Changing the Default Exception Handler
Authors Brian Long Type: Clinic
Issue 14 : October 1996 View article View source code
Summary Changing the Default Exception Handler
Keywords Change exception handler; Default exception handler; Exception handling; Exceptions; OnException; TExceptionEvent

Back to top


Can't Re-Complie The VCL
Authors Brian Long Type: Clinic
Issue 14 : October 1996 View article View source code
Summary Can't Re-Compile The VCL
Keywords Delphi 2; Recompiling VCL; Unit caching; VCL

Back to top


OLE Method Lost
Authors Brian Long Type: Clinic
Issue 14 : October 1996 View article View source code
Summary OLE Method Lost
Keywords DISP_E_UNKNOWNNAME; OLE Automation; OLE Errors Windows 95; OnTimer; Windows95

Back to top


Showing Modal Forms
Authors Brian Long Type: Tip
Issue 14 : October 1996 View article View source code
Summary Showing Modal Forms
Keywords Creating modal forms; Modal forms

Back to top


TDBNavigator Button Click
Authors Maarten van den Broek Type: Tip
Issue 14 : October 1996 View article View source code
Summary TDBNavigator Button Click
Keywords Database; Descending from TDBNavigator; TDBNavigator; TDBNavigator button click

Back to top


Laptop Battery Status
Authors Mike Pijl Type: Tip
Issue 14 : October 1996 View article View source code
Summary Laptop Battery Status
Keywords Laptop battery status; Power management

Back to top


TStringList Versus TStringCollection
Authors Hallvard Vassbotn Type: Tip
Issue 14 : October 1996 View article View source code
Summary TStringList Versus TStringCollection
Keywords Grow; ReadFromFile too slow; SetCapacity; TStringCollection; TStringList

Back to top


Pointer Notation
Authors Hallvard Vassbotn Type: Tip
Issue 14 : October 1996 View article View source code
Summary Pointer Notation
Keywords Pointer notation; ^ operator

Back to top


Delphi 2 Optimisation
Authors Hallvard Vassbotn Type: Tip
Issue 14 : October 1996 View article View source code
Summary Delphi 2 Optimisation
Keywords Case constructs; Compiler optimisation; Delphi 2; Optimisation

Back to top


Your Delphi 2 Executables are 500kb larger than you think!
Authors Hallvard Vassbotn Type: Tip
Issue 14 : October 1996 View article View source code
Summary Your Delphi 2 Executables are 500kb larger than you think!
Keywords Large Delphi 2 EXE files; Memory use; OLE Automation; OLEAUT32.DLL

Back to top


Are you there?
Authors Peter Schrade Type: Tip
Issue 14 : October 1996 View article View source code
Summary Are you there?
Keywords File exists; FileExists problem; FindFirst

Back to top


TPageControl Accelerators
Authors Dean Thompson Type: Tip
Issue 14 : October 1996 View article View source code
Summary TPageControl Accelerators
Keywords Accelerator keys; Delphi 2; TPageControl; TTabSheet

Back to top


One Last Compile...
Authors Type: Article
Issue 14 : October 1996 View article No source code
Summary Delphi books: the lighter side...
Keywords One Last Compile

Back to top


Subclassing Windows from EXE files in 16-bit appliccations
Authors John Chaytor Type: Article
Issue 15 : November 1996 View article View source code
Summary Normally you can only subclass windows from DLLs, John Chaytor shows how to do it from EXE files too.
Keywords Callbacks; Exported functions; FreeProcInstance; MakeProcInstance; Smart callbacks $K directive; Subclassing

Back to top


Digging Into IDAPI
Authors John O'Connell Type: Article
Issue 15 : November 1996 View article View source code
Summary John O'Connell concludes his in-depth investigation of direct BDE calls by discussing table and record locks, in-memory tables and temporary tables
Keywords BDE; Character set; DBITYPES; Database language driver; Direct BDE calls; Exclusive property; File sharing; IDAPI; IDAPI logical field types; In-memory tables; LOCKS in-memory table; Lock retry period; LockTable; Locking; Multi user; Number of open table cursors; Record locks; Table locks; Temporary tables; UnlockTable; UpdateCursorPos; dbiAnsiToBNative; dbiCreateTempTable; dbiGetNextRecord; dbiGetPriorRecord; dbiGetRecord; dbiGetTableOpenCount; dbiIsRecordLocked; dbiIsTableLocked; dbiNativeToAnsi; dbiOpen... functions list; dbiRelRecordLock; dbiSetLockRetry; dbiSetToBegin; dbiSetToEnd

Back to top


Under Construction: Delphi 2 and CGI
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 15 : November 1996 View article View source code
Summary Bob Swart develops an interactive World Wide Web based version of The Delphi Magazine Book Review Database, showing that developing applications for the Internet is nothing to be scared of!
Keywords Browser; CGI; CGI database applications; Common Gateway Interface; Environment variables; Generating HTML; HTML; HTML forms; ISAPI; Internet; Internet applications; Intranet; NSAPI; Paradox field types; Under Construction; WinCGI; Windows NT; World Wide Web

Back to top


Integrating C++ classes into Delphi applications
Authors Mzwanele Type: Article
Issue 15 : November 1996 View article View source code
Summary If you have come to Delphi from C++ you may well have lots of classes you'd like to use in your new Delphi apps -- well, Mzwanele is here to show you how, courtesy of Microsoft's Component Object Model.
Keywords C calling convention; C++; C++ classes in Delphi; COM; Calling DLLs; Component Object Model; Event handlers in C++; Fastcall calling convention; OLE Automation; OWL classes in Delphi; Pascal calling convention; VTBL; Virtual function table; Virtual method table

Back to top


Book Review: Delphi Database Development
Authors Richard Stevens Type: Review
Issue 15 : November 1996 View article No source code
Summary By Ted Blue, John Kaster, Greg Lief and Loren Scott
Keywords Book Reviews; Greg Lief; John Kaster; Loren Scott; Ted Blue

Back to top


Surviving Client/Server: More data processing with SQL
Authors Steve Troxell Type: Article
Issue 15 : November 1996 View article No source code
Summary This month Steve rounds off his look at SQL's data processing capabilities, covering cross tabs, hierarchical data, case statements and more
Keywords Advanced SQL; CASE statement in SQL; Client/Server; Cross tabulations; Frequency distributions; Hierarchical data; MS SQL Server; Outline; SQL; SQL CASE; SQL data processing; SQL: COALESCE; SQL: GROUP BY; Surviving Client/Server; Temporary tables

Back to top


Beating the System: Getting things into context
Authors Dave Jewell Type: Article
Issue 15 : November 1996 View article View source code
Summary Dave shows how to implement your own add-in context menus for Windows 95 and NT 4.0 Explorer
Keywords Beating The System; CAB file format; CABVIEW; CLSID; Context menus; DLLs; Explorer; Object-Site Shell Suite; REGEDIT; Registry; Registry files: importing; UUIDGEN.EXE; Win32; Windows 95; Windows NT 4.0; Writing DLLs

Back to top


Review: MK Query Builder
Authors Tim Boyd Type: Review
Issue 15 : November 1996 View article No source code
Summary MK Query Builder can be built into your applications to allow end-users to perform custom run time queries and create reports.
Keywords MK Query Builder; Reviews

Back to top


Memory Sleuth
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 15 : November 1996 View article No source code
Summary Memory Sleuth is a software testing and debugging tool from TurboPower Software
Keywords Memory Sleuth; TurboPower Software

Back to top


TDBGrid scrollbar odd behaviour
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary TDBGrid scrollbar odd behaviour
Keywords Scrollbar TDBGrid; TDBGrid

Back to top


Paradox picture validation
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary Paradox picture validation
Keywords EditMask; Paradox tables; Picture validation; Validation

Back to top


Moving the mouse
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary Moving the mouse
Keywords Coordinates; Mouse cursor; Moving the mouse cursor; Screen and form coordinates; SetCursorPos

Back to top


Dropping the combobox
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary Dropping the combobox
Keywords Combobox; DroppedDown; Dropping combobox

Back to top


DBGrid row height
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary DBGrid row height
Keywords DBGrid; Setting DBGrid row height; TStringGrid; Typecasting

Back to top


Generic field access
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary Generic field access
Keywords FieldAddress; Generic field access; Help; HelpContext

Back to top


Paradox passwords
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary Paradox passwords
Keywords Change table password; Paradox passwords; Paradox tables; Table passwords: setting

Back to top


Form creation
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary Form creation
Keywords Create; CreateForm; Form creation

Back to top


Network user name
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary Network user name
Keywords GetUserName; Login name; Network user name; User name; WNetGetUser; Win32; Windows user login name; dbiGetNetUserName

Back to top


Changing boolean display
Authors Brian Long Type: Clinic
Issue 15 : November 1996 View article View source code
Summary Changing boolean display
Keywords Boolean; Boolean fields; Changing boolean display

Back to top


TLists revisited
Authors Mark Williams Type: Tip
Issue 15 : November 1996 View article View source code
Summary TLists revisited
Keywords Freeing memory; TList

Back to top


Showing modal forms
Authors Glenn Shukster Type: Tip
Issue 15 : November 1996 View article View source code
Summary Showing modal forms
Keywords Modal forms; Showing modal forms

Back to top


Rich text on the clipboard
Authors Stefan Boether Type: Tip
Issue 15 : November 1996 View article View source code
Summary Rich text on the clipboard
Keywords Clipboard; Clipboard formats; Delphi 2; RTF; Rich text format; Rich text on the clipboard; Win32

Back to top


Which event?
Authors Steve Tung Type: Tip
Issue 15 : November 1996 View article View source code
Summary Which event?
Keywords Event handling; Event sequence; Flow of events; OnCloseQuery

Back to top


Text file device drivers in 32-bit land
Authors Jon Jacobs Type: Tip
Issue 15 : November 1996 View article View source code
Summary Text file device drivers in 32-bit land
Keywords Delphi 2; String parsing; TFDD; Text file device drivers; Win32

Back to top


One Last Compile
Authors Type: Article
Issue 15 : November 1996 View article No source code
Summary A geek, moi?
Keywords One Last Compile

Back to top


Developing Dynamic Web Pages
Authors Steve Troxell Type: Article
Issue 16 : December 1996 View article View source code
Summary Steve takes us deeper into the creation of Web applications, developing a CGI component that works with both conventional CGI and WinCGI
Keywords CGI; FastCGI; ISAPI; Internet applications; NSAPI; Standard CGI; URL encoding; WinCGI; World wide web

Back to top


Introducing Delphi RTTI
Authors Marco Cant∙ Type: Article
Issue 16 : December 1996 View article View source code
Summary Marco reveals some of the hidden secrets in Delphi's run time type information, showing how you can access everything from simple type information to full component property details at run time
Keywords RTTI; RTTI for classes; RTTI for cursors and colours; RTTI for enumerated types; RTTI for method pointers; RTTI for ordinal types; RTTI for properties; Run time type information; SortPropList; TYPINFO.PAS

Back to top


Simple Screen Savers
Authors Paul Warren Type: Article
Issue 16 : December 1996 View article View source code
Summary Paul has a festive treat: create custom screen savers which will impress, complete with sound and animation, using his screen saver expert. Note that additional files for this article are available on our web site at http://members.aol.com/delphimag
Keywords Animation; Bitmap manipulation; Experts; Gradient fills; HPrevInst; Off-screen drawing; Screen savers; Single instance of program; Sprites

Back to top


Surviving Client/Server: Managing User Logins, Part 1
Authors Steve Troxell Type: Article
Issue 16 : December 1996 View article View source code
Summary Steve shows how to build a powerful login manager with password management and audit trail capabilities
Keywords Audit trail; Client/server; Data modules; Login; Login manager; Logon; Password control; SQL: CREATE TABLE; Surviving Client/Server; TDatabase

Back to top


Under Construction: Knowledge Based Solutions
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 16 : December 1996 View article View source code
Summary Bob's specialist area is knowledge based systems and here he explains how to create simple but powerful rule based systems using both forward and backward chaining. This is the first of a 2-part series.
Keywords Artificial intelligence; Backward chaining; Disk full error with Delphi; Expert systems; Forward chaining; Inference engine; Knowledge based systems; Rule based systems; Under Construction

Back to top


Beating The System: Code Generation and Optimisation
Authors Dave Jewell Type: Article
Issue 16 : December 1996 View article No source code
Summary Dave delves into the innards of Delphi's code generator to demonstrate how to write more efficient applications
Keywords Beating The System; Case statement; Code generator; Efficiency; Format routines; Get-Set procedures; Machine code; Open arrays; Optimisation; With statement

Back to top


Hints With Attitude
Authors Brian Long Type: Article
Issue 16 : December 1996 View article View source code
Summary Brian explains how to customise your hint windows, even changing the window shape
Keywords ActivateHint; CM_TEXTCHANGED message; Custom hint shape; Hint window; HintWindowClass; Hints; Hints in status bar; OnHint; Pipe character in hint (|); ShowHint; THintWindow; ToolTip window; ToolTips

Back to top


Book Review: Delphi 2 Developers Guide
Authors Richard Stevens Type: Review
Issue 16 : December 1996 View article No source code
Summary Written by Xavier Pacheco and Steve Teixeira
Keywords Book reviews; Steve Teixeira; Xavier Pacheco

Back to top


One Last Compile...
Authors Type: Article
Issue 16 : December 1996 View article No source code
Summary Programmers are from Mars, users are from Alpha Centauri
Keywords One Last Compile

Back to top


FileMode Failure
Authors Brian Long Type: Clinic
Issue 16 : December 1996 View article View source code
Summary FileMode Failure
Keywords ERROR_SHARING_VIOLATION; FileMode bug Delphi 2; SYSTEM unit bugs Delphi 2; _ResetFile

Back to top


System Modal Forms
Authors Brian Long Type: Clinic
Issue 16 : December 1996 View article View source code
Summary System Modal Forms
Keywords Making forms system modal; SetSysModalWindow; ShowModal; Stop application switching; Windows API; System modal forms

Back to top


System Error Message
Authors Brian Long Type: Clinic
Issue 16 : December 1996 View article View source code
Summary System Error Message
Keywords CreateProcess; ERROR_BAD_EXE_FORMAT; GetLastError; Getting error message text; SysErrorMessage; SysUtils unit

Back to top


Waiting for Termination
Authors Brian Long Type: Clinic
Issue 16 : December 1996 View article View source code
Summary Waiting for Termination
Keywords CreateProcess; Executing external program; GetModuleUsage; ShellExecute; ShellExecuteEx; WaitForSingleObject; Waiting for launched program; Win32; WinExec

Back to top


Single instance only
Authors Brian Long Type: Clinic
Issue 16 : December 1996 View article View source code
Summary Single instance only
Keywords 32-bit; Atoms; Detecting previous instance; GlobalAddAtom; GlobalDeleteAtom; GlobalFindAtom; HPrevInst; Semaphore API; Single instance of program; Win32

Back to top


Thunking update
Authors Brian Long Type: Clinic
Issue 16 : December 1996 View article View source code
Summary Thunking update
Keywords Calling 16-bit from 32-bit; QT_Thunk; Thunking

Back to top


Memory mapped files
Authors Stefan Boether Type: Tip
Issue 16 : December 1996 View article View source code
Summary Memory mapped files
Keywords Boyer Moore; Memory mapped files; Patch programs; Patching EXE files; Searching a buffer; Streams; TFileStream; Text searching; Virtual memory manager; Win32

Back to top


Smart drag and drop
Authors Stefan Boether Type: Tip
Issue 16 : December 1996 View article View source code
Summary Smart drag and drop
Keywords Drag and drop; Drag and drop component; DragAcceptFiles; DragFinish; FindDragTarget; MakeObjectInstance; WM_DROPFILES message

Back to top


Listbox keyboard miscellanea
Authors Brian Long Type: Tip
Issue 16 : December 1996 View article View source code
Summary Listbox keyboard miscellanea
Keywords Listbox keyboard commands; TListBox

Back to top


Creating a WAV file
Authors Nick Hodges Type: Tip
Issue 16 : December 1996 View article View source code
Summary Creating a WAV file
Keywords Creating WAV files; MCISendCommand; MMSYSTEM unit; Sound; TMediaPlayer; TWaveHeader; WAV files

Back to top


Multi-Threaded Database Access With Delphi 2.0
Authors Neil McClements Type: Article
Issue 17 : January 1997 View article View source code
Summary How to use threads to good effect in your 32-bit database applications.
Keywords 32-bit; BDE; Callback threads; Database applications; Multi-Threading; Priority of threads; Spinning cursor; Synchronize threads; TThread; Threaded TDatabase; Threaded database apps; Threads

Back to top


One Last Compile...
Authors Type: Article
Issue 17 : January 1997 View article No source code
Summary Blazing a trail on the electronic frontier
Keywords One last compile

Back to top


Developing Dynamic Web Pages: Part 2
Authors Steve Troxell Type: Article
Issue 17 : January 1997 View article View source code
Summary Steve describes how to add database support to your Web apps, using TDMAid Online, our own web-based article index database, as an example.
Keywords BDE; BDE on NT Server with NTFS; CGI; CGI component; Console applications; Database; Exceptions and console apps; Generating HTML; Internet; SQL; World wide web

Back to top


Book Review: Secrets of Delphi 2 by Ray Lischner
Authors Dave Jewell Type: Review
Issue 17 : January 1997 View article No source code
Summary
Keywords Book review; Ray Lischner

Back to top


Under Construction: TRuleBase Component
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 17 : January 1997 View article View source code
Summary Bob returns to the theme of knowledge-based systems, developing rulebase and factbase components with supporting property and component editors too.
Keywords Backward chaining; Certainty factors; Component editors; Database; Expert systems; Factbase; Forward chaining; Inference engine; Knowledge-based systems; Open Tools API; Property editors; Rule-based systems; Rulebase; Under Construction

Back to top


Beating The System: Code Generation Part 2
Authors Dave Jewell Type: Article
Issue 17 : January 1997 View article No source code
Summary Dave has more insights into Delphi's code generator, including how try-finally blocks work, exception handling and nested procedures, with a summary of hints for slimmer code.
Keywords Beating The System; Delphi's code generator; ExceptList; Exception handling; Get-Set routines; Nested procedures; Open arrays; Optimisation; Performance enhancement; With statements; try-except blocks; try-finally blocks

Back to top


Sharing Data With The Win32 API
Authors John Chaytor Type: Article
Issue 17 : January 1997 View article View source code
Summary John creates Delphi classes to make data sharing between applications easier, with a full explanation of the API goodies that make it all possible.
Keywords Accessing resources; CloseHandle; CreateEvent; CreateFileMapping; CreateMutex; CreateSemaphore; Data sharing between apps; Event objects; Kernel objects; MapViewOfFile; Memory mapped files; Mutex objects; ReleaseSemaphore; ResetEvent; Semaphore objects; SetEvent; Shared memory; Signalling; UnMapViewOfFile; WaitForMultipleObjects; WaitForSingleObject; Win32 API

Back to top


Surviving Client/Server: Managing User Logins, Part 2
Authors Steve Troxell Type: Article
Issue 17 : January 1997 View article View source code
Summary Steve continues developing his login manager, this month adding support for tracking unsuccessful logins and password management
Keywords Audit trail; Changing passwords; Client/server; Expired passwords; Login manager; Password management; Surviving Client/Server; Tracking uncuccessful logins

Back to top


Paradox table corruption
Authors Brian Long Type: Clinic
Issue 17 : January 1997 View article View source code
Summary Reasons for and fixes for Paradox table corruption
Keywords BDE; Data loss; Database; Fixing Paradox tables; Local Share; Lost records; Multi-user; Paradox table corruption; Peer to peer networks; Rebuilding indexes; SHARE.EXE; TUtility; VSHARE; Windows for Workgroups; dbiDoRestructure

Back to top


Debugging DLLs
Authors Brian Long Type: Clinic
Issue 17 : January 1997 View article View source code
Summary How to debug DLLs, components and experts
Keywords Debugging DLLs; Debugging components; Debugging experts; Turbo Debugger

Back to top


Annoying Workgroup Menu
Authors Brian Long Type: Clinic
Issue 17 : January 1997 View article View source code
Summary How to remove the Delphi 2 Workgroup menu
Keywords Delphi 2; Registry; Workgroup menu, removing

Back to top


Making A Unique Key Value
Authors Brian Long Type: Clinic
Issue 17 : January 1997 View article View source code
Summary Tips on creating unique index key values, and whether you should try
Keywords Database; Indexing; Unique index keys; Unique key values

Back to top


The Millenium Bug
Authors Brian Long Type: Clinic
Issue 17 : January 1997 View article View source code
Summary Displaying database dates with 4-digit years to overcome the so-called millenium bug.
Keywords 4-digit year in dates; Database; Date records; Millenium bug; Year 2000

Back to top


Bit Manipulation
Authors Reinhard Greeven Type: Tip
Issue 17 : January 1997 View article View source code
Summary Enhanced bit manipulation class
Keywords Bit manipulation class; Fake classes

Back to top


Version information
Authors Peter J Morriss Type: Tip
Issue 17 : January 1997 View article View source code
Summary Adding version information to EXEs and DLLs
Keywords Version information in EXEs

Back to top


3D Window Borders
Authors Dave Jewell Type: Tip
Issue 17 : January 1997 View article View source code
Summary Adding 3D borders to MDI windows like in Microsoft Apps
Keywords 3D MDI Window borders; 3D Window borders; MDI; WS_EX_CLIENTEDGE; Window style bits

Back to top


Searching all drives for a file
Authors Tom Corcoran Type: Tip
Issue 17 : January 1997 View article View source code
Summary Searching all drives for a file
Keywords Drive list; File search on all drives; Nested procedures; Recursion; Searching for files; Valid drives

Back to top


Under Construction: Talking DDE To PragMan
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 18 : February 1997 View article View source code
Summary Bob develops 16-bit and 32-bit DDE components to work with your Windows environment: creating groups or folders, adding items and so on.
Keywords 32-bit DDE; Adding icons; Building components; Creating groups; DDE; DDE macro commands; DDE parameter packing; DDEML; Dynamic Data Exchange; Explorer; Message handling; PROGMAN; Porting strings to 32-bits; Program Manager; ShortString; Under Construction; WM_DDE_ACK; WM_DDE_DATA; WM_DDE_EXECUTE; WM_DDE_INITIATE; WM_DDE_REQUEST; WM_DDE_TERMINATE; Windows environment; Windows messages

Back to top


Dynamic Loading And Unloading Of Fonts
Authors Stewart McSporran Type: Article
Issue 18 : February 1997 View article View source code
Summary If your application uses custom fonts, this article shows how to load them temporarily just for your application and then unload them
Keywords AddFontResource; CreateScalableFontResource; Dynamic fonts; FOT and TTF files; Font resources; GetTempDrive; GetTempFileName; GetTempPath; Installing fonts; Loading fonts; Locating TEMP directory; Naming temporary files; RemoveFontResource; Temporary files; TrueType fonts; Uninstalling fonts; Unloading fonts; WM_FONTCHANGE

Back to top


Beating The System: Coolbars - the route to ultra-cool apps
Authors Dave Jewell Type: Article
Issue 18 : February 1997 View article View source code
Summary How to create CoolBars the ultra-cool way. Note that the disk for this issue also contains two implementations of CoolButtons, one freeware and one shareware.
Keywords Beating The System; COMCTL32.DLL; COMMCTRL unit; Common control style flags; CoolBars; CreateWindowEx; InitCommonControlsEx; Message handling; MoveWindow; ToolBarWindow32; Windows 95; Windows Common Controls; Windows NT 4.0

Back to top


A Truly Usable Message Box
Authors Steven J Colagiovanni Type: Article
Issue 18 : February 1997 View article View source code
Summary How to overcome the problems and limitations of the built-in messsage boxes and learn lots of useful techniques along the way.
Keywords Add components at run time; Application modal forms; Application.MessageBox; Automatic word breaks; Beeps and sounds; BorderIcons property; Calculate dialog size; Centre form on screen; Centre form over application; Create form at run time; Creating glyphs; Cursor handling; Custom message boxes; DT_CALCRECT; DT_NOPREFIX; DT_WORDBREAK; Disabling System menu items; DrawText; Font sizing; GetSystemMenu; Glyphs in video driver; Include & in text; LoadIcon; Message boxes; Message dialogs; MessageBeep; MessageDlg; MessageDlgPos; Quick beep; RemoveMenu; ShowMessage; ShowMessagePos; Space needed by text; System menu; System modal forms; Text rectangle

Back to top


Book Review: Delphi Client/Server Developer's Guide
Authors Steve Troxell Type: Review
Issue 18 : February 1997 View article No source code
Summary Written by Joseph D Booth
Keywords Book Reviews; Client/Server; Joseph D Booth

Back to top


Surviving Client/Server: Managing User Logins Part 3
Authors Steve Troxell Type: Article
Issue 18 : February 1997 View article View source code
Summary Steve concludes his login manager, adding support for database/server overrides and handling multiple databases
Keywords Aliases; BDE; Changing database at runtime; Changing server at runtime; Client/Server; Login manager; Multiple databases; Overriding database; Overriding server; Surviving Client/Server; TDatabase.AliasName

Back to top


Managing Your Memory
Authors David Selwood Type: Article
Issue 18 : February 1997 View article View source code
Summary How to make the most of your precious data segment
Keywords $M compiler directive; Calculating free DOS memory; Calculating memory use; Data segment; GetFreeSpace; GetFreeSystemResources; Global heap; Local heap usage; Memory management; Setting stack size; Stack usage; Windows heap; Windows task database

Back to top


One Last Compile...
Authors Type: Article
Issue 18 : February 1997 View article No source code
Summary Leading from the back
Keywords One last compile...

Back to top


Generic MakeMethodInstance For 16/32 Bit Applications
Authors John Chaytor Type: Article
Issue 18 : February 1997 View article View source code
Summary How to get at those useful callback routines to support object methods
Keywords Allocating memory; Callbacks; Convert method to function; Creating machine code; Executable memory; Executing memory; Hidden Self variable; Inserting into stack; Intel machine code; MakeObjectInstance; Manipulating the stack; Object methods; OpCodes; PAGE_EXECUTE_READWRITE; Pascal calling convention; Register calling convention; Scanning a directory; VirtualAlloc; VirtualFree

Back to top


Explorer-Like DBGrid
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary Column-sorting column headers for DBGrid like Windows Explorer
Keywords Column headers; DBGrid; Self--sorting columns; Sorting columns; SysHeader32; SysListView32; THeaderControl; TListView; Windows Explorer

Back to top


Clearing contents of a TIMage
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary How to clear a TImage's contents at runtime
Keywords Clearing contents of TImage; Freeing TImage resources

Back to top


Storing bitmap image in form file
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary Storing bitmap image in form file
Keywords Bitmap property editors; Storing bitmap in form file; Storing image in form file; TPicture

Back to top


Edit mask hang bug
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary Edit mask hang bug
Keywords Edit mask bug; TEditMask bug and fix

Back to top


Using Object Browser
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary Using Object Browser
Keywords Symbol information; Using Object Browser

Back to top


Implementing a splitter
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary Implementing a splitter
Keywords Implementing a splitter; Splitter component; TSplitControl

Back to top


Stay on top watch window
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary Stay on top watch window
Keywords Keep watch window on top; Keep window on top; NormalizeTopMosts; Stay on top; Stay on top watch window

Back to top


Unique key values (update from Issue 17)
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary Unique key values (update from Issue 17)
Keywords Index keys; Unique key values; Update from Issue 17

Back to top


Single instance only (update from Issue 16)
Authors Brian Long Type: Clinic
Issue 18 : February 1997 View article View source code
Summary Single instance only (update from Issue 16)
Keywords Single instance; Update from Issue 16

Back to top


TDBGrid Columns
Authors Roberto De Marini Type: Tip
Issue 18 : February 1997 View article View source code
Summary TDBGrid columns
Keywords HideEditor; TDBGrid Columns property; TDBGrid bug Delphi 2; WM_HSCROLL message

Back to top


FreeObject instead of Free
Authors Reinhard Greeven Type: Tip
Issue 18 : February 1997 View article View source code
Summary FreeObject instead of Free
Keywords Free an object; FreeObject; Set object pointer to nil

Back to top


Property Read/Write Fields
Authors Hallvard Vassbotn Type: Tip
Issue 18 : February 1997 View article View source code
Summary Property Read/Write Fields
Keywords Property read/write fields

Back to top


Bug in Delphi 2 ComboBox
Authors Hallvard Vassbotn Type: Tip
Issue 18 : February 1997 View article View source code
Summary Bug in Delphi 2 ComboBox
Keywords Bug in Delphi 2 ComboBox; ComboBox bug; SelLength in TComboBox; SelStart in TComboBox

Back to top


Delphi 2 for loop bug
Authors Hallvard Vassbotn Type: Tip
Issue 18 : February 1997 View article View source code
Summary Delphi 2 for loop bug
Keywords Delphi 2 for loop bug

Back to top


Generating compile date
Authors Thilo Bretschneider Type: Tip
Issue 18 : February 1997 View article View source code
Summary Generating compile date
Keywords Generating compile date

Back to top


Environment variables
Authors The African Chief Type: Tip
Issue 18 : February 1997 View article View source code
Summary Environment variables
Keywords Environment variables; GetEnvVar for Delphi; PATH

Back to top


Selecting the component library
Authors Phil Alexander Type: Tip
Issue 18 : February 1997 View article View source code
Summary Selecting the component library
Keywords COMPLIB.DCL; DCL files; Selecting component library

Back to top


Book Review: Delphi 2 Developer's Solutions
Authors Bob Swart (aka Dr.Bob) Type: Review
Issue 19 : March 1997 View article No source code
Summary Written by Nathan Wallace and Steve Tendon
Keywords Book Review; Nathan Wallace; Steve Tendon

Back to top


C++ Builder For Delphi Users
Authors Brian Long Type: Article
Issue 19 : March 1997 View article No source code
Summary Brian Long has burned the midnight oil doing an in-depth evaluation for us.
Keywords C++ Builder; C++ and Pascal; C++ language basics; C++ operators; C++ switch statement; Open arrays in C++; RTTI in C++; Sets in C++; Variants in C++

Back to top


Under Construction: A Delphi 2.01 Debugger
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 19 : March 1997 View article View source code
Summary Delphi builds great CGI applications for the internet, now you can easily debug or demo them without a web server using Bob Swart's new CGI debugger,built using the NetManage ActiveX controls which come with Delphi 2.01
Keywords CGI; Debugging CGI apps; HTML browser; HTML forms; Internet; Internet Solutions Pack; NetManage ActiveX controls; URLs for local files; Under Construction:; Web browser; WinCGI; World wide web

Back to top


Internet Apps With ISAPI
Authors Steve Troxell Type: Article
Issue 19 : March 1997 View article View source code
Summary Steve Troxell demonstrates how to use the API for Microsoft's IIS web server to good effect for go-faster internet apps
Keywords CGI; DLLs; ISAPI; Internet; Internet Information Server; Internet applications; Microsoft IIS; Server callback functions; Web browser; Web server APIs; Web server extensions; World wide web

Back to top


Beating The System: Managing Desktop Shortcuts
Authors Dave Jewell Type: Article
Issue 19 : March 1997 View article View source code
Summary Returning to the Win95 / NT4.0 shell, Dave Jewell shows how to add shortcuts onto the desktop from your installation programs
Keywords Beating The System; CoInitialize; CoUnInitialize; Desktop folder; Explorer COM interfaces; IShellLink; Shell API; Shell link bugs; Shell links; Shortcut description bug; Shortcuts; Windows 95; Windows NT 4

Back to top


16-Bit Serial Communications
Authors John Chaytor Type: Article
Issue 19 : March 1997 View article View source code
Summary John Chaytor de-mystifies the Windows 3.1x serial comms API and builds an easy to use Delphi class to get you going
Keywords Asynchronous communications; Baud rate; COMM.DRV; CTS/RTS flow control; Comm lines status; Convert data to bit stream; DTR/DSR flow control; Device control; Dial; Flow control; Hang up; Hardware flow control; IRQ and Base I/O address; Parity; Serial Data Unit SDU; Serial cable; Serial comms errors; Serial communications; Serial port; UART chip; Windows comms API; Windows serial comms class; Windows serial comms driver

Back to top


One Last Compile...
Authors Type: Article
Issue 19 : March 1997 View article No source code
Summary Components? I can handle them
Keywords One Last Compile...

Back to top


Surviving Client/Server: Customized User Administration
Authors Steve Troxell Type: Article
Issue 19 : March 1997 View article View source code
Summary Steve Troxell creates a user administration application which you can easily customize and build into your own client/server systems
Keywords Adding users; Client/server; Database administrator; Login manager; Password administration; RDBMS API; SQL; Stored procedures; Surviving Client/Server; TDatabase; User administration; User security

Back to top


Review: Anchor-P Copy Protection
Authors Dave Jewell Type: Review
Issue 19 : March 1997 View article No source code
Summary There are many dongles around, but this one from BL Computer Security comes with a Delphi expert to generate customized interface code for your applications; Dave Jewell gives it the eagle eye
Keywords Anchor-P Copy Protection; BL Computer Security; Copy protection; Dongle; Experts; Review; Security Key

Back to top


Window startup mode
Authors Brian Long Type: Clinic
Issue 19 : March 1997 View article View source code
Summary Window startup mode
Keywords CmdShow; Delphi 2; Multiple entries in taskbar; Start program minimised; Start program minimized; Taskbar; Window startup mode; WindowState

Back to top


OCX Deployment
Authors Brian Long Type: Clinic
Issue 19 : March 1997 View article View source code
Summary OCX Deployment
Keywords Class not registered; DLLRegisterServer; EOleError; Installing OCX controls; LoadLibrary; OCX Deployment

Back to top


Oracle packages
Authors Brian Long Type: Clinic
Issue 19 : March 1997 View article View source code
Summary Oracle packages
Keywords Oracle 7.2; Oracle packages bug; SQL; SQL Links 3.5; Stored procedures

Back to top


File finding
Authors Brian Long Type: Clinic
Issue 19 : March 1997 View article View source code
Summary File finding
Keywords Callbacks; File finding; FindClose; FindFirst; FindNext; Search for a file; Search for and act on files; TSearchRec

Back to top


Eating mouse clicks and key presses
Authors Brian Long Type: Clinic
Issue 19 : March 1997 View article View source code
Summary Eating mouse clicks and key presses
Keywords Application.ProcessMessages; Eating key presses; Eating mouse clicks

Back to top


TApplication's missing events
Authors Jim Cooper Type: Tip
Issue 19 : March 1997 View article View source code
Summary TApplication's missing events
Keywords CreateForm wrongly declared; Delphi Help file errors; Help links broken; HintHidePause property; HintMouseMessage; HintShortPause property; TApplication missing events; TApplication.CreateHandle; TApplication.HideHint; TApplication.Initialize; TApplication.ShowMainForm; UpdateFormatSettings

Back to top


Heap checking
Authors Roberto De Marini Type: Tip
Issue 19 : March 1997 View article View source code
Summary Heap checking
Keywords Custom memory manager; GetMemoryManager; Heap checker unit; Heap checking; Install memory manager; SetMemoryManager; TMemoryManager

Back to top


Combo box helpers
Authors Kent Shaw Type: Tip
Issue 19 : March 1997 View article View source code
Summary Combo box helpers
Keywords Combo box helpers; Filling DBLookupCombo; Filling TDBComboBox

Back to top


Data validation, required fields and null values
Authors Glen Janken Type: Tip
Issue 19 : March 1997 View article View source code
Summary Data validation, required fields and null values
Keywords BeforePost event; Data validation; Required fields, null values

Back to top


Beating the System: Explorer-style active buttons
Authors Dave Jewell Type: Article
Issue 20 : April 1997 View article View source code
Summary Having shown us how to easily create CoolBars, Dave is back with the low-down on making the buttons to go onto them!
Keywords 3D captions; Active button; Beating the system; Button with popup menu; Capturing mouse activity; Component development; Controls with window handle; Cool button; CoolBar; Creating disabled glyphs; Explorer button component; Flat buttons; Internet Explorer; MouseCapture; Popup menus; Rebar; TTimer needs window handle; Transparent colors

Back to top


One last compile...
Authors Type: Article
Issue 20 : April 1997 View article No source code
Summary Getting by (with a little help from my friends)
Keywords One last compile...

Back to top


The Delphi 3 Novelty Store
Authors Brian Long Type: Article
Issue 20 : April 1997 View article No source code
Summary The first part of an in-depth preview of Delphi 3
Keywords $DenyPackageUnit; $DesignOnly; $ImportedData; $RunOnly; $WeakPackageUnit; Asian language support; Assertions; BDE 4 with Dephi 3; BDE administrator; BLOb caching; Business insight; CPU window; Code completion; Code insight; Code parameters; Code templates; Component templates; Creating ActiveX controls; Decision Cube; Delphi 3 IDE; Delphi 3 and databases; Delphi 3 compiler directives; Delphi 3 preview; Distributed datasets; EnableCPU in Registry; Explorer style buttons; Expression evaluator; Flat buttons; ISAPI, ISAPI2; JPEG support; Mutex; NSAPI; New Delphi 3 componments; Package collections; Packages; Rebar; Resourcestring; Semaphores; String resources; TAnimate; TChart; TCheckListBox; TCoolBar; TDBNavigator; TDBRichEdit; TDataSet Delphi 3; TDateTimePicker; TDecisionCube; TDecisionGrid; TOpenPictureDialog; TProvider; TSavePictureDialog; TSpeedButton; TSplitter; TStaticText; WideString; Win32Check; WinINET

Back to top


Surviving Client/Server: User-defined SQL functions
Authors Steve Troxell Type: Article
Issue 20 : April 1997 View article View source code
Summary How to create user-defined functions for Interbase in Delphi
Keywords Client/server; DECLARE EXTERNAL FUNCTION; DROP EXTERNAL FUNCTION; Date fields in Interbase; Interbase; Interbase and Delphi types; Interbase built-in functions; Interbase datatypes; Linking DLLs to Interbase; Reading Interbase BLOBs; SQL; Strings in SQL; Surviving client/server; User-defined SQL functions; User-defined functions

Back to top


Under Construction: Multi-threading in components
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 20 : April 1997 View article View source code
Summary How to add multi-threading to components and applications, with tips on concurrent programming
Keywords Concurrent programming; Creating threads; Dining philosophers problem; Multi-tasking; Multi-threading; Multi-threading in VCL; Mutli-threading efficiency; TThread; TThread.Execute; TThread.Synchronize; Terminating threads; Thread class expert; Thread priority; Thread-safe VCL; Threads; Under Construction

Back to top


Things you can do with standard controls: the ListBox
Authors Brian Long Type: Article
Issue 20 : April 1997 View article View source code
Summary How to get more out of TListBox: displaying non-text items, adding tab support, adding horizontal scrollbar
Keywords ComboBox; CreateParams; CreateWnd; DestroyWnd; Dialog measurment units; GetDialogBaseUnits; Graphics in ListBox; Horizontal scrollbar listbox; Non-text items in ListBox; Owner draw ComboBox; Owner draw ListBox; Owner draw controls; RecreateWnd; Saving listbox contents; Scrolling listbox; TListBox; Tab characters in ListBox; TabStopSupport; lb_SetHorizontalExtent; lbs_SetTabStops; lbs_UseTabStops

Back to top


Review: Async Professional for Delphi 2.01
Authors Dave Jewell Type: Review
Issue 20 : April 1997 View article No source code
Summary Review of Async Professional for Delphi serial communications library from TurboPower Software
Keywords Async Professional; Serial communications; TurboPower Software

Back to top


Client/Server caching using file streams
Authors Neil McClements Type: Article
Issue 20 : April 1997 View article View source code
Summary Database client applications can get bogged down accessing rarely-changing data from the server. Neil shows how to overcome this by using file streams to cache such data, presenting cached combobox and cached calendar controls too.
Keywords Cache; Cached calendar; Cached combo box; Client/server; Data caching; File modes using streams; File streams; LoadFromStream; SaveToStream; TCalendar; TComboBox

Back to top


Getting Delphi 2 and 3 help files to co-exist
Authors Brian Long Type: Clinic
Issue 20 : April 1997 View article View source code
Summary Getting Delphi 2 and 3 help files to co-exist
Keywords Delphi 2 help files; Delphi 3 help files; Registry

Back to top


Trapping keystrokes in a TCheckBox
Authors Brian Long Type: Clinic
Issue 20 : April 1997 View article View source code
Summary Trapping keystrokes in a TCheckBox
Keywords PostMessage; ProcessMessages; SendMessage; Sending messages; TCheckBox; Trapping keypresses; Trapping keystrokes; Windows message handling; cm_WantSpecialKey; cn_KeyDown; wm_GetDialogCode; wm_KeyDown

Back to top


Property editors for properties of components in DLLs
Authors Brian Long Type: Clinic
Issue 20 : April 1997 View article View source code
Summary Property editors for properties of components in DLLs
Keywords Components in DLLs; Property editors

Back to top


ShellExecuteEx doesn't work under Windows NT
Authors Brian Long Type: Clinic
Issue 20 : April 1997 View article View source code
Summary ShellExecuteEx doesn't work under Windows NT
Keywords Calling external programs; Executing external programs; ShellExecuteEx not for WinNT; Windows NT

Back to top


Direct access to hardware ports
Authors Brian Long Type: Clinic
Issue 20 : April 1997 View article View source code
Summary Direct access to hardware ports
Keywords CMOS access; Calling 16-bit DLLs; Device drivers; Direct access to ports; Hardware access; Port access in 32-bit; Port and PortW

Back to top


Class methods for cleaner, more reliable code
Authors Stephan Westen Type: Tip
Issue 20 : April 1997 View article View source code
Summary Class methods for cleaner, more reliable code
Keywords Avoiding global variables; Class methods; Creating forms at runtime

Back to top


Managing stored procedures
Authors Stefan Boether Type: Tip
Issue 20 : April 1997 View article View source code
Summary Managing stored procedures
Keywords CREATE PROCEDURE; DROP PROCEDURE; Installing stored procedures; Managing stored procedures; SQL

Back to top


Re-opening closed datasets
Authors Stefan Boether Type: Tip
Issue 20 : April 1997 View article View source code
Summary Re-opening closed datasets
Keywords Active property not saved; Re-opening closed datasets

Back to top


Table cloning
Authors Stefan Boether Type: Tip
Issue 20 : April 1997 View article View source code
Summary Table cloning
Keywords Mutliple table handles; TTable; Table cloning

Back to top


BDE Paradox driver bug for BLOB fields of size zero
Authors Hallvard Vassbotn Type: Tip
Issue 20 : April 1997 View article View source code
Summary BDE Paradox driver bug for BLOB fields of size zero
Keywords BDE Paradox driver bug; BLOB fields of size zero; CreateTable; Creating Paradox tables; dbiTranslateRecordStructure

Back to top


Initialized variables
Authors Rick Hansen Type: Tip
Issue 20 : April 1997 View article View source code
Summary Initialized variables
Keywords Initialized variables

Back to top


The Delphi 3 Novelty Store: Part 2
Authors Brian Long Type: Article
Issue 21 : May 1997 View article No source code
Summary Brian Long returns with the second part of his in-depth preview of Delphi 3, covering the new Common ObjectModel, class interface and OLE Automation features, plus one-step ActiveXs, Active Forms, Web application building and more...
Keywords Active insight; ActiveForms; COM; COM Classes; Calling conventions; Class Identifier (CLSID); Class factories; Class interface; ClassIDToString; Component Object Model; CreateOLEObject; Creating ActiveX controls; DCOM; Delphi 3; Distributed COM; Dual interface COM object; EIntfCastError; Entera; GuidToString; IDispatch; ISAPI; IUnknown; Interface ID (IID); Interface querying; Interface reserved word; Multiple interfaces; NSAPI; OLE; OLE Automation; OLEnterprise; Open Environment tools; StringToClassID; StringToGuid; TAutoObject; TComObjectFactory; TComServer; TDatasetTableProducer; TGUID; TInterfacedClass; TInterfacedObject; TPageProducer; TQueryTableProducer; TWebDispatcher; Type libraries; Virtual method table (VMT); Web server applications; coclass; safecall

Back to top


Review: Reporting Tools
Authors David Sutherland Type: Review
Issue 21 : May 1997 View article No source code
Summary David Sutherland has been closeted away with five of the leading reporting tools for Delphi and is now ready to spill the beans with an in-depth evaluation of Ace Reporter, Piparti Pro, QuickReport, Report Printer Pro and Shazam Report Wizard ─ if you need to build reports this is one review that shouldn't be missed
Keywords Ace Reporter; Delphi reporting tools; Digital Metaphors; Nevrona; Piparti Pro; QDS; QuickReport; Report Printer Pro; Report components; Report writing tools; Reviews; SCT Associates; Shazam Report Wizard; Shazam Ware

Back to top


Under Construction: Delphi Wizard Magic
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 21 : May 1997 View article View source code
Summary We've made Experts before, but now Bob Swart shows how to turn them into Wizards with an interface consistent with you know who, along with details of how to make Wizards binary compatible with both Delphi and C++Builder!
Keywords Component templates; Creating Wizards; Creating experts; Delphi 3; Interface guidelines; ShareMem Delphi, C++ Builder; TIExpert; Under Construction; Wizard expert; Wizard interfaces; Wizards for C++ Builder

Back to top


Reducing Server Load
Authors Jan Casteels Type: Article
Issue 21 : May 1997 View article No source code
Summary In a client/server application, howyou write and process your SQL statements can have a dramatic affect on the performance of the system, asJan Casteels demonstrates, with of course some practical advice on getting the best results
Keywords Client/server; Database server load; Network server traffic; Oracle 7; Oracle V$SQLAREA table; Performance tuning; Prepare; Preparing SQL queries; Reducing server memory use; SQL; Server performance analysis; Static and dynamic SQL

Back to top


One Last Compile: Good programming practices #137: the job ads
Authors Type: Article
Issue 21 : May 1997 View article No source code
Summary Good programming practices #137: the job ads
Keywords One last compile

Back to top


Beating the System: Manipulating 16-bit resources
Authors Dave Jewell Type: Article
Issue 21 : May 1997 View article View source code
Summary There's gold locked away inside all those EXE and DLL files on your system: resources of all kinds, from icons to dialogs, and this month Dave Jewell shows how to go on a resource-mining expedition!
Keywords Beating the system; ExtractIcon; Extracting resources; Resource tables; Resource types; Resources in DLLs and EXEs; Windows NE file format; Windows New Exexcutable

Back to top


TCP/IP data transfer with the NetManage TCP ActiveX
Authors Bill Fisher Type: Article
Issue 21 : May 1997 View article View source code
Summary Since version 2.01 Delphi has includeda set of internet-related ActiveX controls, here Bill Fisher demonstrates how to use the TCP control to transfer bitmaps, sounds and EXE files over a TCP/IP connection, whether it be on your LAN or over the internet
Keywords Delphi 2 internet controls; Internet applications; NetManage TCP ActiveX; Networks; TCP/IP binary data transfer; Using ActiveX controls

Back to top


Making StringGrid cells non-selectable
Authors Brian Long Type: Clinic
Issue 21 : May 1997 View article View source code
Summary Making StringGrid cells non-selectable
Keywords CanSelect property; Making cells non-selectable; OnSelectCell; Prevent cell highlighting; Selecting StringGrid cells; TStringGrid; goRangeSelect

Back to top


Setting TComboBox drop-down width
Authors Brian Long Type: Clinic
Issue 21 : May 1997 View article View source code
Summary Setting TComboBox drop-down width
Keywords ReleaseHandle; TComboBox drop down width; Typecasting; cb_SetDroppedWidth

Back to top


Polymorphic procedure calls
Authors Brian Long Type: Clinic
Issue 21 : May 1997 View article View source code
Summary Polymorhpic prodcedure calls
Keywords Polymorphic procedure calls; Procedural variables; Procedure types

Back to top


Interrupting SQL queries
Authors Brian Long Type: Clinic
Issue 21 : May 1997 View article View source code
Summary Interrupting SQL queries
Keywords Avoiding huge result sets; Interrupting SQL queries; SQL MAX ROWS

Back to top


Determining Windows platform: 3.1, Windows 95, Windows NT
Authors Brian Long Type: Clinic
Issue 21 : May 1997 View article View source code
Summary Determining Windows platform: 3.1, Windows 95, Windows NT
Keywords Dectecting Windows version; Detecting Windows 95; Detecting Windows NT; Determining Windows platform; GetVersion; GetWinFlags; Getting Win32 build number; Win32Platform

Back to top


Trapping unwanted double clicks
Authors Brian Long Type: Clinic
Issue 21 : May 1997 View article View source code
Summary Trapping unwanted double clicks
Keywords Mouse handling; Trapping double clicks; Unwanted double clicks

Back to top


Setting system date and time
Authors Brian Long Type: Clinic
Issue 21 : May 1997 View article View source code
Summary Setting system date and time
Keywords SetLocalTime; Setting system date and time

Back to top


Lost carets
Authors Brian Long Type: Clinic
Issue 21 : May 1997 View article View source code
Summary Lost input carets in edit controls
Keywords No edit control input caret; OnExit event handlers

Back to top


Controlling Internet Explorer via OLE Automation
Authors Alistair Moffat Type: Tip
Issue 21 : May 1997 View article View source code
Summary Controlling Internet Explorer via OLE Automation
Keywords Internet Explorer; OLE Automation; TWebBrowser

Back to top


Exceptions in QuickReport
Authors Richard Smith Type: Tip
Issue 21 : May 1997 View article View source code
Summary Exceptions in QuickReport
Keywords Exceptions in QuickReport

Back to top


Vertical fonts in QuickReport
Authors Richard Smith Type: Tip
Issue 21 : May 1997 View article View source code
Summary Vertical fonts in QuickReport
Keywords TrueType fonts; Vertical fonts QuickReport

Back to top


Assigning accelerator keys at runtime
Authors Tom Corcoran Type: Tip
Issue 21 : May 1997 View article View source code
Summary Assigning accelerator keys at runtime
Keywords Accelerator keys at runtime; Assigning accelerator keys; Setting accelerator keys

Back to top


Free disk space on drives over 2Gb
Authors Peter Hyde Type: Tip
Issue 21 : May 1997 View article View source code
Summary Free disk space on drives over 2Gb
Keywords DiskFree; DiskSpace; Drives over 2Gb; Free disk space

Back to top


Filename without extension
Authors Tom Corcoran Type: Tip
Issue 21 : May 1997 View article View source code
Summary Filename without extension
Keywords Filename without extension

Back to top


Run-time location information in Delphi 2
Authors Vitaly Miryanov Type: Article
Issue 22 : June 1997 View article View source code
Summary Vitaly has some neat tricks to allow you to determine the source file and line number where an error occurred, at run time on your users' machines!
Keywords Add resource file to EXE; Binding in resources; Error addresses; Error location; Execution order; Include files {$I}; Line number at runtime; Locate errors at runtime; MAP file errors; MAP file format; Order units executed; Public symbols; RC_DATA resources; RTLI; Resource compiler; Runtime location information

Back to top


Things you can do with standard controls: the TButton
Authors Brian Long Type: Article
Issue 22 : June 1997 View article View source code
Summary Using the owner draw capabilities of Delphi's controls greatly adds to their flexibility and this month Brian Long shows how to implement owner draw for the humble TButton, adding colours and auto-repeat capabilities
Keywords Auto-repeating buttons; Changing component owner; Changing component parent; Colored buttons; Coloured buttons; Custom buttons; GetParent; GetWindow; GetWindowLong; Notification messages; OnDrawItem; OnMeasureItem; Owner component; Owner draw; Owner window; Parent component; Parent window; RecreateWnd; TButton; Window creation; cn_Base = $2000; cn_CtlColorBtn; wm_CtlColorBtn; wm_MeasureItem; ws_Popup window style; ws_child window style; ws_overlapped window style

Back to top


Under Construction: Delphi 3 active forms
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 22 : June 1997 View article View source code
Summary Bob Swart shows how to use one of the great new features in Delphi 3, making a Wizard ActiveForm and deploying it on the Web too!
Keywords Active forms; Active forms and VB4; ActiveForm Wizard; ActiveForms; ActiveForms and VB4; ActiveX, Internet Explorer; Code signing; Creating ActiveX controls; Delphi 3; Deploying ActiveForms; Deploying ActiveForms on Web; DllRegisterServer; Dynamic ActiveForms; IClassFactory; OCX; TAnimate; Under Construction

Back to top


High-Accuracy timing
Authors Brian Frost Type: Article
Issue 22 : June 1997 View article View source code
Summary Implementing accurate timing over short periods, or creating an accurate but brief delay, is not at all straightforward in Windows, but Brian Frost has all the answers, plus with a handy application profiling tool as well
Keywords Accurate delays; Accurate timing; Application profiling; Bios timing; Clock tick; Delay in Borland Pascal; Hardware timer; High-accuracy timing; Interrupt 2F; OpTimer from TurboPower; Profiler; Profiling with oscilloscope; Profiling with printer port; QueryPerformanceCounter; QueryPerformanceFrequency; TTimer; Timing; Virtual timer device VTD

Back to top


Beating The System: Manipulating 16-bit resources, part 2
Authors Dave Jewell Type: Article
Issue 22 : June 1997 View article View source code
Summary BLast month Dave Jewell showed us how to extract resources from 16-bit executables, this month he concludes by explaining how to save them into standard icon and bitmap file formats
Keywords 16-bit resources; Beating the System; Bitmap file format; Bitmap resources; Extracting resources; GROUPICON resource; Icon file format; Icon resources; Resources in EXE and DLL; TBitmapInfoHeader; Writing bitmap files; Writing icon files

Back to top


Surviving client/server: Database design primer
Authors Steve Troxell Type: Article
Issue 22 : June 1997 View article No source code
Summary Everything you always wanted to know about database design principles but were afraid to ask, explained clearly and simply by Steve Troxell
Keywords Actionable information; Atomic values; Client/server design; Data normalisation; Data normalization; Database design; Declarative constraints; First normal form; No repeating groups; Null values in tables; Open/closed architecture; Relational database design; SQL; SQL DEFAULT; SQL NOT NULL; SQL domains; SQL user defined data types; Second normal form; Surviving client/server; Third normal form; Triggers; User security

Back to top


One last compile: Psst! Wanna know a secret?
Authors Type: Article
Issue 22 : June 1997 View article No source code
Summary Psst! Wanna know a secret?
Keywords One last compile

Back to top


Review: TCompress
Authors Dave Jewell Type: Review
Issue 22 : June 1997 View article No source code
Summary Dave Jewell kicks the tyres on this data compression component from SPIS
Keywords Data compression; Reviews; SPIS New Zealand; TCompress

Back to top


Review: TMultLang 1.2
Authors Peter Hyde , Richard Smith Type: Review
Issue 22 : June 1997 View article No source code
Summary Peter Hyde and Richard Smith have both grappled with multi-lingual apps and report back on a component from Lingscape which aims to make the whole thing a breeze...
Keywords Lingscape; Multilingual applications; Multiple languages; Reviews; TMultLang

Back to top


SDI menu problems
Authors Brian Long Type: Clinic
Issue 22 : June 1997 View article View source code
Summary SDI menu problems
Keywords SDI applications; SDI menu problems

Back to top


Drag and drop onto TMemo
Authors Brian Long Type: Clinic
Issue 22 : June 1997 View article View source code
Summary Drag and drop onto TMemo
Keywords Drag and drop onto TMemo; Locating TMemo input caret; TMemo

Back to top


Multiple TSplitter
Authors Brian Long Type: Clinic
Issue 22 : June 1997 View article View source code
Summary Multiple TSplitter
Keywords Coordinating TSplitters; Delphi 3; Multiple TSplitter

Back to top


Minimising Delphi applications
Authors Brian Long Type: Clinic
Issue 22 : June 1997 View article View source code
Summary Minimising Delphi applications
Keywords Minimising Delphi apps; Minimizing

Back to top


Query execution speed
Authors Brian Long Type: Clinic
Issue 22 : June 1997 View article View source code
Summary Query execution speed
Keywords 16-bit and 32-bit local SQL; Infopower QBE component; QBE queries; Query execution speed; SQL queries too slow

Back to top


Unique log files
Authors Tom Corcoran Type: Tip
Issue 22 : June 1997 View article View source code
Summary Unique log files
Keywords Unique log files; Using TStream for a log file

Back to top


Validating TBitmap
Authors Tom Corcoran Type: Tip
Issue 22 : June 1997 View article View source code
Summary Validating TBitmap
Keywords Validate bitmap file; Validating TBitmap

Back to top


Closing DOS program window
Authors Bruno Sonnino Type: Tip
Issue 22 : June 1997 View article View source code
Summary Closing DOS program window
Keywords Closing DOS program window; WinExec; command.com /c; sw_ShowNormal

Back to top


Design time context sensitive help
Authors Peter Hyde Type: Tip
Issue 22 : June 1997 View article View source code
Summary Design time context sensitive help
Keywords Context sensitive help; Delphi 3; Design time help

Back to top


TabbedNotebook and TabSet components
Authors Stephen Posey Type: Tip
Issue 22 : June 1997 View article View source code
Summary TabbedNotebook and TabSet components
Keywords Accessing notebook pages; Enumerated types; TTTabbedNotebook; TTabSet

Back to top


QuickReports band layout
Authors Brandon Smith Type: Tip
Issue 22 : June 1997 View article View source code
Summary QuickReports band layout
Keywords QuickReports band layout

Back to top


QuickReports multiple detail fields
Authors Brandon Smith Type: Tip
Issue 22 : June 1997 View article View source code
Summary QuickReports multiple detail fields
Keywords Multiple detail fields; QuickReports

Back to top


QuickReports sizing and placement
Authors Brandon Smith Type: Tip
Issue 22 : June 1997 View article View source code
Summary QuickReports sizing and placement
Keywords QuickReports; Sizing and placing fields

Back to top


Converting Pascal to HTML
Authors Marco Cant∙ Type: Article
Issue 23 : July 1997 View article View source code
Summary Marco describes Delphi's undocumented TParser code parser class and how he used it to create some really neat tools to display all your project source in a web browser
Keywords Code parsing; Convert Pascal to HTML; Convert project to HTML; HTML; Internet; Lexical analysis; Parsing; Parsing source code; TParser; ToolServices; Wizards & experts

Back to top


Under Construction: Delphi 3 packages
Authors Bob Swart (aka Dr.Bob) , Chad Z Hower Type: Article
Issue 23 : July 1997 View article View source code
Summary Bob Swart is joined by Chad Hower this month, together they give us the complete run-down on Delphi 3's new packages: using them for both run-time and design-time, writing and deploying them, with the benefits and pitfalls revealed, plus package collections and code signing.
Keywords $IMPLICITBUILD; $IMPORTEDDATA; $RUNONLY; CAB file compression; Code signed packages; Code signing; Compiler directives; Creating packages; DCP files; DLLs; DPK files; DPL files; Delphi 3; Deploying packages; Design time packages; Distributing packages; Install package collection; List of packages in Delphi; Package collection editor; Package collections; Package versioning; Packages; Runtime packages; Under Construction; requires

Back to top


Startup and shutdown points
Authors Brian Long Type: Article
Issue 23 : July 1997 View article View source code
Summary Delphi applications, units and DLLs have a variety of exit and entry points, Brian Long explains them all so you know exactly where to place your initialisation and finalisation code
Keywords $DenyPackageUnit; AddExitProc; AddTerminateProc; Application.Terminate; DLL LibMain; DLL WEP; DLL entry point; DLL exit point; DLLEntryPoint; DLLMain; DLLProc; Exit procedures; ExitProc; Form drawing completed; InitProc; Initialisation procedures; Initialization; OnCloseQuery; Package exit procedure; Packages; Program entry point; Program exit point; Shutdown; Startup; TApplication.Initialize; Unit entry point; Unit exit point; Unit initialisation; finalization; wm_Paint; wm_QueryEndSession

Back to top


One last compile
Authors Type: Article
Issue 23 : July 1997 View article No source code
Summary The RAD road to Hell
Keywords One last compile...

Back to top


Surviving client/server: credit payments, part 1
Authors Steve Troxell Type: Article
Issue 23 : July 1997 View article View source code
Summary Steve Troxell begins examination of a client/server system case study, with insights into application and database design decisions
Keywords Auto-increment fields; Case study; Client/server; Client/server design; Credit payments; Database design; InterBase; InterBase generator; SQL; Surviving client/server

Back to top


Creating component suites: an event list
Authors Paul Warren Type: Article
Issue 23 : July 1997 View article View source code
Summary Paul Warren gets frustrated with badly written component suites, this monthhe begins an occasional series of key tips with an event list object for easy component interaction
Keywords Component building; Component suites; Creating components; Event list component; Events; Linking components; Sharing events

Back to top


Beating the system: Adding to your Delphi toolkit
Authors Dave Jewell Type: Article
Issue 23 : July 1997 View article View source code
Summary Dave Jewell takes a rest from bleeding edge technology and presents two nifty time-savers: a delimited string class and a minimal-code history list unit
Keywords 32-bit disk access; Default properties; Delimited string class; Delimited strings; Disk serial numbers; History list; History list unit; INI files; MRU list; Multiple constructors; Parsing; Parsing delimited strings; TStrings.CommaText; Text parsing; Windows Registry; Windows for Workgroups

Back to top


Windows 95 system fonts
Authors Steven J Colagiovanni Type: Article
Issue 23 : July 1997 View article View source code
Summary Steven Colagiovanni demonstrates how to change the system fonts in your Win95 applications
Keywords Changing system fonts; Font styles; GetSysColor; GetSysFont; LOGFONT structure; SPI_GETNONCLIENTMETRICS; System font colors; System fonts; SystemParametersInfo; TLogFont; Window caption width; Windows 95

Back to top


Express yourself
Authors Chris McNeil Type: Article
Issue 23 : July 1997 View article View source code
Summary If you ever need to handle algebraic expressions (that's formulae to you and me!) Chris McNeil's TExpression component will get the job done easily and efficiently
Keywords Algebra; Calculations; Creating components; Equations; Expression handling; GetComponentProperties; Maths; Properties; Property editors; Sub-properties

Back to top


Message dialog buttons
Authors Brian Long Type: Clinic
Issue 23 : July 1997 View article View source code
Summary Message dialog buttons
Keywords Custom message dialogs; Message dialog buttons; MessageDlg; ShowMessage

Back to top


Critical Sections
Authors Brian Long Type: Clinic
Issue 23 : July 1997 View article View source code
Summary Critical Sections
Keywords CRITICAL_SECTION; Critical Sections; EnterCriticalSection; TRTLCriticalSection; Win32 API

Back to top


Stay on top TDBLookupComboBox in Delphi 1
Authors Brian Long Type: Clinic
Issue 23 : July 1997 View article View source code
Summary Stay on top TDBLookupComboBox in Delphi 1
Keywords Bring component to top; Bring window to top; Stay on top; TDBLookupComboBox; TPopUpGrid

Back to top


Using Locate with multiple fields
Authors Brian Long Type: Clinic
Issue 23 : July 1997 View article View source code
Summary Using Locate with multiple fields
Keywords Database search; Locate with multiple fields; TTable

Back to top


Acessing Win32 help file contents page
Authors Brian Long Type: Clinic
Issue 23 : July 1997 View article View source code
Summary Acessing Win32 help file contents page
Keywords Help file contents page

Back to top


Application launcher: finding running applications
Authors Brian Long Type: Clinic
Issue 23 : July 1997 View article View source code
Summary Application launcher: finding running applications
Keywords Application launcher; FindWindow; Finding running applications; Microsoft office manager; Switching to running app

Back to top


ShowWindow problem
Authors Brian Long Type: Clinic
Issue 23 : July 1997 View article View source code
Summary ShowWindow problem
Keywords BringWindowToTop; FindWindow; Restore minimised program; ShowWindow

Back to top


Update: executing methods by name
Authors Brian Long Type: Clinic
Issue 23 : July 1997 View article View source code
Summary Update: executing methods by name (from Issue 21: poor man's polymorphism)
Keywords Execute methods by name

Back to top


QuickReports images and dots
Authors Brandon Smith Type: Tip
Issue 23 : July 1997 View article View source code
Summary QuickReports images and dots
Keywords QuickReports images and dots

Back to top


QuickReports generalised report control
Authors Brandon Smith Type: Tip
Issue 23 : July 1997 View article View source code
Summary QuickReports generalised report control
Keywords QuickReports

Back to top


Delphi 3 hints bug
Authors Hallvard Vassbotn Type: Tip
Issue 23 : July 1997 View article View source code
Summary Delphi 3 hints bug
Keywords Delphi 3 hints bug

Back to top


Delphi 2 and 3 hints and warning bug
Authors Hallvard Vassbotn Type: Tip
Issue 23 : July 1997 View article View source code
Summary Delphi 2 and 3 hints and warning bug
Keywords Compiler hints and warnings; Delphi 2 bug; Delphi 3 bug

Back to top


Memo line and column
Authors Bruno Sonnino Type: Tip
Issue 23 : July 1997 View article View source code
Summary Memo line and column
Keywords TMemo line and column

Back to top


Under Construction: Delphi 3 Web Modules, Part 1
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 24 : August 1997 View article View source code
Summary Bob Swart begins a 2-part investigation into the new web modules included with Delphi 3's Client/Server Edition
Keywords Building internet apps; CGI and WinCGI; Delphi 3; Generating HTML; ISAPI; Internet; IntraBob CGI debugger; NSAPI; TDataSetTableProducer; TPageProducer; TWebApplication; TWebDispatcher; TWebRequest; TWebResponse; Under Construction; Web modules; Web server applications

Back to top


Things You Can Do With Standard Controls: TMenuItem
Authors Brian Long Type: Article
Issue 24 : August 1997 View article View source code
Summary Brian Long unravels more secrets of owner draw controls, demonstrating how to spice up your menus with glyphs
Keywords Bitmap transparency; Bitmaps on menus; Custom menu items; Glyphs on menus; ModifyMenu; Owner draw menu items; TMenuItem

Back to top


Surviving Client/Server: Credit Payments, Part 2
Authors Steve Troxell Type: Article
Issue 24 : August 1997 View article View source code
Summary Following on from last month's case study, Steve Troxell wraps up the project with more helpful design and implementation hints
Keywords Client/server; Credit payments case study; Grid data changes; Master-detail-detail; OnSetEditText; Surviving Client/Server

Back to top


Creating NT Services
Authors John Chaytor Type: Article
Issue 24 : August 1997 View article View source code
Summary Services are a powerful feature of Windows NT, but how can you write your own? John Chaytor has the answers, with example programs and Delphi classes to make it simpler
Keywords Console applications; Creating NT services; Installing NT services; Registering NT services; Service Control Manager; Windows NT

Back to top


Beating The System: Zip Files, Peeking Under The Hood
Authors Dave Jewell Type: Article
Issue 24 : August 1997 View article View source code
Summary The ubiquitous Zip file is everywhere nowadays and Dave Jewell shows how to delve inside and find what's there
Keywords Beating the System; Data compression; QuickSort; Sorted TList; Sorting; ZIP file contents; ZIP file format

Back to top


Implementing Class-Traps For Delphi And C++Builder
Authors Cyril Jandia Type: Article
Issue 24 : August 1997 View article View source code
Summary Cyril Jandia wants to be in at the birth and death of his objects so he came up with a simple technique, encapsulated in the TClassTrap class
Keywords Assembly view Delphi 2; Class traps; Free; FreeInstance; Hooking functions; Hooking object creation; Hooking object destruction; Memory protection; NewInstance; Object construction; Object destruction; PAGE_EXECUTE_READ; PAGE_READWRITE; System unit; TClass; TVmt; VMT; Virtual method table; _ClassCreate; _ClassDestroy

Back to top


One last compile
Authors Type: Article
Issue 24 : August 1997 View article No source code
Summary I love my company, and my company loves me
Keywords One last compile

Back to top


Nashville BDC: A Mike's Eye View
Authors Mike Orriss Type: Article
Issue 24 : August 1997 View article No source code
Summary Mike Orriss reports back on his experiences at Borland's annual conference, held this year in Nashville, Tennessee
Keywords BDC 1997; Borland Conference 1997; Nashville conference 1997

Back to top


More News From Nashville
Authors Chris Frizelle Type: Article
Issue 24 : August 1997 View article No source code
Summary Borland used their conference to make some key announcements: here's a summary
Keywords BDC 1997; Borland conference 1997; Nashville conference 1997

Back to top


Review: ISGMAPI
Authors Peter Hyde Type: Review
Issue 24 : August 1997 View article No source code
Summary Your apps could have built in email and fax capabilities at the drop of a hat with this component from Infinity Software and a little help from MS Exchange, reviewed by Peter Hyde
Keywords Communications components; Email; Fax; ISGMAPI 2.0; Infinity Software Group; MAPI; MS Exchange; Reviews

Back to top


Making A 256 Colour Bitmap
Authors Brian Long Type: Clinic
Issue 24 : August 1997 View article View source code
Summary Making A 256 Colour Bitmap
Keywords Colour bitmaps; Making a 256 colour bitmap; Palettes; TBitmap; TLogPalette

Back to top


Delphi 2/3 Typed TObject Bug
Authors Hallvard Vassbotn Type: Tip
Issue 24 : August 1997 View article View source code
Summary Delphi 2/3 Typed TObject Bug
Keywords Typed TObject bug Delphi 2/3

Back to top


Background Palette Information
Authors Brian Long Type: Clinic
Issue 24 : August 1997 View article View source code
Summary Background Palette Information
Keywords Colour bitmaps; Palettes

Back to top


MessageDlg Surprises
Authors Brian Long Type: Clinic
Issue 24 : August 1997 View article View source code
Summary MessageDlg Surprises
Keywords MessageDlg buttons

Back to top


Localised Database Headaches
Authors Brian Long Type: Clinic
Issue 24 : August 1997 View article View source code
Summary Localised Database Headaches
Keywords BCD fields; BDE; ENABLE BCD in BDE; Personal Oracle 7.3

Back to top


Iconic Applications
Authors Brian Long Type: Clinic
Issue 24 : August 1997 View article View source code
Summary Iconic Applications
Keywords Iconic applications; Non client area; Start app as icon; Start app minimised; TApplication; WindowState; wm_NCCreate; wm_QueryOpen; wsMinimized

Back to top


Modifying Form Files
Authors Brandon Smith Type: Tip
Issue 24 : August 1997 View article View source code
Summary Modifying Form Files
Keywords DFM files; Modifying form files

Back to top


BDE Version Incompatibilities
Authors Brandon Smith Type: Tip
Issue 24 : August 1997 View article View source code
Summary BDE Version Incompatibilities
Keywords BDE Version Incompatibilitie; BDE versions 3 and 4; Delphi 3; Multiple primary indexes; Table creation

Back to top


More Delimiter Tools
Authors Brandon Smith Type: Tip
Issue 24 : August 1997 View article View source code
Summary More Delimiter Tools
Keywords Comma delimited strings; Storing user settings; Storing window position; Storing window size

Back to top


Just The Extension Please
Authors Pete Frizzell Type: Tip
Issue 24 : August 1997 View article View source code
Summary Just The Extension Please
Keywords Just file extension

Back to top


Surviving Client/Server: Custom Dataset Components, 1
Authors Steve Troxell Type: Article
Issue 25 : September 1997 View article View source code
Summary Delphi 3 now makes it much easier to interface to databases without using the BDE and this month Steve Troxell begins a series demonstrating how to do just this by creating your own dataset components
Keywords BDE; BDE replacements; Bookmarks; Borland Database Engine; Client/server; Custom dataset components; Delphi 3; Interfacing to databases; Replacing the BDE; Surviving client/server; TBDEDataSet; TDataSet

Back to top


Who Said It's Hip To Be Square?
Authors Steven J Colagiovanni Type: Article
Issue 25 : September 1997 View article View source code
Summary Tired of those boring old rectangular windows in your app? Well Steven Colagiovanni is here to show you how to spice things up with windows any shape you like!
Keywords CombineRgn; CreateEllipticRgn; CreatePolygonRgn; Creating window regions; Custom window shapes; Custom window titlebar; Non-rectangular windows; SetWindowRegion; SetWindowRgn; Win32; Win32 drawing functions; Windows with holes in

Back to top


Web Commerce With Delphi
Authors Peter Hyde Type: Article
Issue 25 : September 1997 View article View source code
Summary As the web gets more and more popular, so companies are more interested in using it to sell their wares but how can you build the secure web apps needed? Peter Hyde discusses the issues and pitfalls and demonstrates a simple online sales application created using the WebHub application framework
Keywords CGI applications; Credit card validation; ECommerce; HTML; Internet; Online sales; SSL; Secure server; Secure web transactions; Web applications; Web browser security; Web commerce programs; WebHub; World wide web

Back to top


One Last Compile...
Authors Type: Article
Issue 25 : September 1997 View article No source code
Summary Mr Angry Writes
Keywords One Last Compile...

Back to top


Beating The System: Now Where Did I Put That File?
Authors Dave Jewell Type: Article
Issue 25 : September 1997 View article View source code
Summary Dave Jewell creates a general purpose file finding utility class, which can even look inside ZIP files, ready to plug into your own applications
Keywords Beating the system; Deleting a file tree; Detecting available drives; Detecting drive type; File finder utility; FindFirst; FindNext; Long file names; Regular expression handler; Searching for files; Searching inside zip files; Wildcard file matching

Back to top


Under Construction: Delphi 3 Web Modules, Part 2
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 25 : September 1997 View article View source code
Summary Continuing on from last month, Bob Swart shows how to write dynamic queries, save state information and even eat some cookies along the way...
Keywords CGI applications; Cookies; Delphi 3; Dynamic queries in web apps; HTML forms; Hidden HTML form fields; Internet; NSAPI and ISAPI; Saving state; TPageProducer; TQueryTableProducer; TWebDispatcher; Under Construction; Web applications; Web modules; World wide web

Back to top


Speeding Up Client/Server
Authors David Selwood Type: Article
Issue 25 : September 1997 View article View source code
Summary Mission-critical client/server apps need to run fast and David Selwood has lots of tips to help you ensure your programs will make the grade, including BDE setup, transaction control, SQL tuning and making the most of your chosen database server
Keywords BDE; BDE configuration; Cached updates; Client/server; Data modules; ENABLE SCHEMA CACHE; Index design; Locate method; Multi-threading; Optimisation; Performance enhancement; SQL passthrough; SQL searching; SQLPASSTHRO MODE; SQLQRYMODE; Server tuning; Stored queries; Synchronize; Transaction control

Back to top


GUID Generation
Authors Brian Long Type: Clinic
Issue 25 : September 1997 View article View source code
Summary GUID Generation
Keywords Creating a GUID; GUID Generation; Globally unique identifier

Back to top


ReportSmith and the TReport mystery
Authors Brian Long Type: Clinic
Issue 25 : September 1997 View article View source code
Summary ReportSmith and the TReport mystery
Keywords ReportSmith; TReport and Delphi 3

Back to top


Static class data
Authors Brian Long Type: Clinic
Issue 25 : September 1997 View article View source code
Summary Static class data
Keywords C++ static keyword; Class methods; ClassName; Static class data

Back to top


WideString
Authors Brian Long Type: Clinic
Issue 25 : September 1997 View article View source code
Summary WideString
Keywords Unicode; WideString; WideString and Caption; WideString and Text

Back to top


Win32s
Authors Brian Long Type: Clinic
Issue 25 : September 1997 View article View source code
Summary Win32s not supported in Delphi
Keywords Win32s not supported Delphi

Back to top


Command line compiler
Authors Brian Long Type: Clinic
Issue 25 : September 1997 View article View source code
Summary Command line compiler
Keywords Command line compiler

Back to top


Accessing components by name
Authors Brian Long Type: Clinic
Issue 25 : September 1997 View article View source code
Summary Accessing components by name
Keywords Accessing components by name; FindComponent

Back to top


Pixel colours changing
Authors Brian Long Type: Clinic
Issue 25 : September 1997 View article View source code
Summary Pixel colours changing
Keywords Bitmap transparency; Pixel colours changing; TBitmap; TransparentColor

Back to top


Copying string lists to the clipboard
Authors Warren Kovach Type: Tip
Issue 25 : September 1997 View article View source code
Summary Copying string lists to the clipboard
Keywords Clipboard; Copying string lists to the; TStringList

Back to top


Exposing field name
Authors Tom Corcoran Type: Tip
Issue 25 : September 1997 View article View source code
Summary Exposing field name
Keywords Exposing field name; Getting field name

Back to top


Large string lists
Authors Reinhard Greeven Type: Tip
Issue 25 : September 1997 View article View source code
Summary Large string lists
Keywords Creating TStringList; Increasing TStringList size; Large string lists; Setting TStringList size; TStringList

Back to top


Upgrading data between program versions
Authors Stefan Boether Type: Tip
Issue 25 : September 1997 View article View source code
Summary Upgrading data between program versions
Keywords Program and data versions; Upgrading data utility unit

Back to top


Trapping Keystrokes
Authors Warren Kovach Type: Article
Issue 26 : October 1997 View article View source code
Summary Warren Kovach demonstrates how to trap system-wide keystrokes by hooking into the Windows API, with a nifty Tray icon application to make entering accented and extended characters so easy as his example
Keywords Accented characters; Broadcasting messages; CallNextHookEx; Compose key; Computer based training hook; Delphi shared memory manager; Examining messages; Extended characters; Foreign language characters; HWND_BROADCAST; Hooking Windows events; Hooking mouse events; KeyPreview; Keystroke handling; Message record/playback; Multiple instances of DLLs; OnKey... events; RegisterWindowMessage; SetWindowsHookEx; ShareMem unit; Trapping keystrokes; Tray icon applications; Types of Windows hook; UnhookWindowsEx; User defined messages; Virtual key codes; WH_JOURNALPLAYBACK; WH_JOURNALRECORD; WH_KEYBOARD hook; WM_TranslateKeys; Windows API; Windows hooks; Windows memory mapped files; Windows messages

Back to top


Surviving Client/Server: Custom Dataset Components, 2
Authors Steve Troxell Type: Article
Issue 26 : October 1997 View article View source code
Summary Following on from last month's introduction, Steve Troxell concludes his discussion of database access without the BDE, covering null, date/time, calculated and lookup fields
Keywords Calculated fields; Client/server; Custom TDataSet; Custom dataset components; Data-aware components; Database access; Defining fields; Non-BDE database access; Null values; Simple data dictionary; Surviving Client/Server; TDataSet; TField component; TFieldDef

Back to top


Under Construction: Homepage Hit Counter
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 26 : October 1997 View article View source code
Summary Who's been coming to call? Bob Swart shows how to construct various types of hit counter for your website so you can discover exactly how popular you are!
Keywords CGI applications; GIF file format; HTML; IP address of surfer; Internet applications; JPEG files; MIME headers; TJPEGImage; Under Construction; Website hit counter; Website log files; World wide web

Back to top


Things You Can Do With Standard Controls: TPageControl
Authors Brian Long Type: Article
Issue 26 : October 1997 View article View source code
Summary Brian Long delves further into the mechanics of owner-draw controls, this month showing how to jazz up your notebooks by placing the tabs anywhere you want, replace them with buttons, or even use images along with the text descriptions of each tab
Keywords 32bit common controls; Custom notebook controls; Custom page controls; Owner drawn controls; Page control with bitmaps; TPageControl; TTabControl

Back to top


Extending Web Solution Builder
Authors Chad Z Hower Type: Article
Issue 26 : October 1997 View article View source code
Summary Web Solution Builder (previously known as Portcullis/IAG) is a neat way to create web applications in Delphi, but you can also extend it, as its lead developer Chad Hower shows us, with custom HTML writers, placeholders to add non-Delphi HTML features and even customise Delphi existing components
Keywords Drawbridge API; Internet applications; Portcullis; Shoreline Software; Web applications; Web solution builder; World wide web

Back to top


Beating The System: Runtime Library Determination Utility
Authors Dave Jewell Type: Article
Issue 26 : October 1997 View article View source code
Summary Imagine a customer calling up to complain you forgot to include a vital DLL in the distribution package! Dave Jewell can help you avoid such embarrassment with his utility to find just what DLLs and Delphi packages your new masterpiece needs
Keywords Beating the System; Checking DLL usage; DLL import data; EXE file format; RVA; Relative virtual address; TDump; Which DLLs are required?; Which packages are required?

Back to top


One Last Compile...
Authors Type: Article
Issue 26 : October 1997 View article No source code
Summary Interface issues: would you like to call an ambulance? ...and what's that bright green alien trying to say?
Keywords One last compile...

Back to top


DirectX 3D In Delphi
Authors Andrew Kern , Noel Rice Type: Article
Issue 26 : October 1997 View article View source code
Summary Andrew Kern and Noel Rice demonstrate how to exploit Microsoft's DirectX 3D graphics library in your own Delphi applications, with a bare-bones example to get you started
Keywords Direct3D graphics; DirectX 3D graphics; Retained mode

Back to top


Data Aware Control Request
Authors Brian Long Type: Clinic
Issue 26 : October 1997 View article View source code
Summary Data Aware Control Request
Keywords Data aware components; Data aware controls; Data aware date picker; Date/time picker; TDateTimePicker; TFieldDataLink

Back to top


Clipboard
Authors Brian Long Type: Clinic
Issue 26 : October 1997 View article View source code
Summary Clipboard
Keywords Clipboard formats; Components on clipboard; Custom clipboard format; Multiple clipboard formats; TClipBoard

Back to top


IDAPI32.CFG
Authors Mike Orriss Type: Tip
Issue 26 : October 1997 View article View source code
Summary IDAPI32.CFG
Keywords BDE; Borland Database Engine; Disappearing aliases; IDAPI32.CFG

Back to top


Changing The Month
Authors Mike Orriss Type: Tip
Issue 26 : October 1997 View article View source code
Summary Changing The Month
Keywords Changing month; Date arithmetic; Number of days in month; TDateTime

Back to top


Plugging In A Class
Authors Jonas W Nordlof Type: Tip
Issue 26 : October 1997 View article View source code
Summary Plugging In A Class
Keywords Making VCL changes; Modifying compiled component; VCL changes without source

Back to top


Notebook Menu Merging
Authors Paul Warren Type: Tip
Issue 26 : October 1997 View article View source code
Summary Notebook Menu Merging
Keywords Menus and notebooks; Notebook menu merging; TMainMenu

Back to top


Version Information
Authors Octavio "Dave" Hernandez Type: Tip
Issue 26 : October 1997 View article View source code
Summary Version Information
Keywords RT_VERSION resource; Reading version information; TVSVersionFileInfo; VerQueryValue; Version information; VersionInfo resource

Back to top


Starting Projects Via DPR
Authors Mark Erbaugh Type: Tip
Issue 26 : October 1997 View article View source code
Summary Starting Projects Via DPR
Keywords Starting projects via DPR

Back to top


Code Completion
Authors Stephane Groberty Type: Tip
Issue 26 : October 1997 View article View source code
Summary Code Completion
Keywords Code completion; Form components

Back to top


Navigation With Cursor Keys
Authors Octavio "Dave" Hernandez Type: Tip
Issue 26 : October 1997 View article View source code
Summary Navigation With Cursor Keys
Keywords Form KeyPreview property; Keybd_Event; Navigation with cursor keys; Synthesising keystrokes

Back to top


Update: More Delimiter Tools, Issue 24
Authors Brandon Smith Type: Tip
Issue 26 : October 1997 View article View source code
Summary Update: More Delimiter Tools, Issue 24
Keywords Delimited text; Parsing words; Update: more delimiter tools

Back to top


Update: Just The Extension Please
Authors Thale Hadderingh Type: Tip
Issue 26 : October 1997 View article View source code
Summary Update: Just The Extension Please
Keywords ExtractFileName; Just file extension; Modify file extension

Back to top


Delusions Of Grandeur
Authors Julian Bucknall Type: Article
Issue 27 : November 1997 View article View source code
Summary Julian Bucknall knows that it's a big wide multilingual world out there and has come up with some clever techniques to ensure that text strings which include all those funny accented, extended and ligature characters always sort correctly
Keywords ANSII; Accented characters; AnsiCompareStr; Character encoding; Character sets; Collation order; CompareStr; CompareString; Comparing strings; DOS Code page; Extended characters; High-ascii characters; Indexing; Ligatures; OEM character set; Sorting; Windows character set; country.sys; display.sys

Back to top


Surviving Client/Server: Data Mining With TDecisionCube
Authors Steve Troxell Type: Article
Issue 27 : November 1997 View article No source code
Summary The Client/Server Edition of Delphi 3 includes a new suite of components which make presenting complex data a simple task; Steve Troxell shows how to use them to best effect so that your users can go on their very own mining expeditions...
Keywords Client/server; Crosstabulation; Data analysis; Data mining; Decision cubes; Decision support; Delphi 3; SQL; Surviving Client/Server; TDecisionCube; TDecisionGraph; TDecisionGrid; TDecisionPivot; TDecisionSource

Back to top


Under Construction: TBrokenLink Component
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 27 : November 1997 View article View source code
Summary Now you know who's visiting your website (see last month's column), it's time to find and fix up all those broken links! Bob Swart creates a component to find both local and internet-wide broken links, plus there's a copy of his InterBob link checker on the disk too!
Keywords Broken website links; Callbacks; File finding; FindFirst; HTML; HTML links; HTTP protocol; Internet; InternetCloseHandle; InternetConnect; InternetOpen; Local and remote link checks; Parsing HTML files; Under Construction; WININET.DLL; Web apps; Windows internet functions; World wide web

Back to top


One Last Compile...
Authors Type: Article
Issue 27 : November 1997 View article No source code
Summary How often do you do it?
Keywords One last compile

Back to top


Delphi 3 Add-In Packages: Digging The Dirt On Archaeopteryx
Authors Brian Long Type: Article
Issue 27 : November 1997 View article View source code
Summary Brian Long's curiosity got the better of him when he checked out a couple of the new Delphi 3 IDE add-ins: he figured out how the magic was done and created his very own add-in, called Archaeopteryx; even better, now he's sharing the secrets he discovered with us all
Keywords Application object; Archaeopteryx; Chained event handlers; Customising Delphi 3; Delphi 3 IDE enhancement; Delphi 3 add-ins; Event chaining; Fake onclick events; FindComponent; Flat buttons; Merlin; Multiline component palette; NT memory leak; Packages; Raptor; Shortcut; T-Rex; TextToShortcut bug; Window styles; Windows NT

Back to top


Beating The System: EXE Sniffing, The Story Continues...
Authors Dave Jewell Type: Article
Issue 27 : November 1997 View article View source code
Summary No, Dave Jewell hasn't found some crazy new way to get high, but this month he's delving inside your Delphi executables to determine just what units and packages are compiled into them
Keywords $WEAKPACKAGEUNIT; Beating the system; Delphi 3; EXE file format; Finding units in EXE files; GetPackageInfo; LoadLibrary; Merlin; PACKAGEINFO resource; Streams; TResourceStream; UpdateResource; Which packages used; Which units used

Back to top


Who Am I?
Authors Xavier Pacheco Type: Article
Issue 27 : November 1997 View article View source code
Summary Xavier Pacheco shows how to use version information in your Delphi 3 projects: adding it and retrieving it, with a handy TVerInfoRes class to make it all even simpler
Keywords Delphi 3; Executable version; GetFileVersionInfo; GetFileVersionInfoSize; Getting version information; VerQueryValue; Version information

Back to top


Controls Demystified
Authors Glenn Lawrence Type: Article
Issue 27 : November 1997 View article View source code
Summary Controls, components: which is which and why does it matter? Glenn Lawrence has the answers and some very helpful hints to improve your applications
Keywords Class hierarchy; Control tree; Controls and components; Disabled controls; Enabled property; FindDragTarget; Finding controls; Graphic controls; Mouse over control; Non-visual components; Parent and child controls; Sibling controls; TComponent; TControl; TGraphicControl; TWinControl; Visual components; WindowFromPoint; Windowed controls; Wrapper controls

Back to top


UNC
Authors Brian Long Type: Clinic
Issue 27 : November 1997 View article View source code
Summary UNC
Keywords TDirectoryListBox; TFileListBox; UNC drive names

Back to top


Unexpected Disk Space
Authors Brian Long Type: Clinic
Issue 27 : November 1997 View article View source code
Summary Unexpected Disk Space
Keywords DiskFree and NT 4; Drives over 3Gb

Back to top


Calling Into DLLs
Authors Brian Long Type: Clinic
Issue 27 : November 1997 View article View source code
Summary Calling Into DLLs
Keywords Calling into DLLs; DLL calls

Back to top


Context Help
Authors Brian Long Type: Clinic
Issue 27 : November 1997 View article View source code
Summary Context Help
Keywords BorderIcons; Context Help; Context sensitive Help; Window border buttons

Back to top


Table Names
Authors Brian Long Type: Clinic
Issue 27 : November 1997 View article View source code
Summary Table Names
Keywords Getting Access table names; TSession

Back to top


Forms Compiled Into Exes
Authors Brian Long Type: Clinic
Issue 27 : November 1997 View article View source code
Summary Forms Compiled Into Exes
Keywords Extracting forms from EXEs; ObjectResourceToText; convert.exe

Back to top


DLL Imports
Authors Brian Long Type: Clinic
Issue 27 : November 1997 View article View source code
Summary DLL Imports
Keywords DLL import table garbled; QuickView

Back to top


Win32 API error codes
Authors Andy McFarlane Type: Tip
Issue 27 : November 1997 View article View source code
Summary Win32 API error codes
Keywords FormatMessage; GetLastError; Win32 API error codes

Back to top


Two 'Gotchas'
Authors Mat Newman Type: Tip
Issue 27 : November 1997 View article View source code
Summary Two 'Gotchas'
Keywords EnumChildWindows callback; SetParent

Back to top


Update: Starting Projects Via DPR
Authors Russ Garner Type: Tip
Issue 27 : November 1997 View article View source code
Summary Update: Starting Projects Via DPR
Keywords Loading projects in Explorer

Back to top


Update: Navigation With Cursor Keys (Issue 26)
Authors Lucas Franzen Type: Tip
Issue 27 : November 1997 View article View source code
Summary Update: Navigation With Cursor Keys (Issue 26)
Keywords Navigation with cursor keys

Back to top


Const Parameters
Authors Mike Orriss Type: Tip
Issue 27 : November 1997 View article View source code
Summary Const Parameters
Keywords Const parameters; Passing Interfaces

Back to top


Colours Property Editor
Authors Mike Scott Type: Tip
Issue 27 : November 1997 View article View source code
Summary Colours Property Editor
Keywords Color property editor; Colour property editor

Back to top


FilteredComponent Property Editor
Authors Mike Scott Type: Tip
Issue 27 : November 1997 View article View source code
Summary FilteredComponent Property Editor
Keywords Component property editor; Property editors

Back to top


DbiDoRestructure Wrapper
Authors Roberto De Marini Type: Tip
Issue 27 : November 1997 View article View source code
Summary DbiDoRestructure Wrapper
Keywords DbiDoRestructure wrapper; Rebuilding indexes; Restructuring tables

Back to top


Subclassing
Authors Brandon Smith Type: Article
Issue 28 : December 1997 View article View source code
Summary Brandon Smith explains how Windows API subclassing can improve your applications and provides some useful hints and techniques
Keywords Component parent and child; CreateParams; EN_CHANGE; Enhanced memo component; Event handling; GetProp; MakeObjectInstance; SetProp; Subclassing; TMemo; TWinControl; TurnOnSubclassing; WNDCLASS structure; WNDPROC; Window classes; Window procedure; WindowProc; Windows API; Windows message handling; Windows messages

Back to top


Surviving Client/Server: Phonetic Matching
Authors Steve Troxell Type: Article
Issue 28 : December 1997 View article View source code
Summary Matching the right information data to the right database record can be tricky, but Steve Troxell has the solutions: Soundex and Metaphone phonetic matching, all ready to roll
Keywords Client/server; Metaphone; Phonetic matching; SQL; Soundex; Surviving client/server; Text matching

Back to top


TDataSet Update from Issues 25 and 26
Authors Steve Troxell Type: Article
Issue 28 : December 1997 View article View source code
Summary TDataSet Update from Issues 25 and 26
Keywords Custom TDataSet; Surviving client/server

Back to top


Surviving SQL: Phonetic matching
Authors Steve Troxell Type: Article
Issue 28 : December 1997 View article View source code
Summary Steve Troxell brings us the first of his occasional SQL hints and tips column, this month's edition is an SQL implementation of Soundex
Keywords Client/server; SQL; SQL Server; Soundex; Stored procedures; Surviving SQL

Back to top


Under Construction: Assertions
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 28 : December 1997 View article View source code
Summary Delphi 3 introduced assertions and Bob Swart explains how to use them to best effect in error handling, along with implementations for earlier Delphi versions too
Keywords $ASSERTIONS ON; $C+ compiler directive; Assert in Delphi 1 and 2; Assert in Delphi 3; Assertions; Assertions and exceptions; Debug version; Error handling; Error location; Source code line; Under construction

Back to top


Delphi Meets COM: Part 1
Authors Dave Jewell Type: Article
Issue 28 : December 1997 View article No source code
Summary COM (or Component Object Model) programming is becoming increasingly important in Windows and Dave Jewell starts this series by explaining the foundations of it all and just why it's something we all need to know about
Keywords ActiveX; CLSID; COM programming; Component Object Model; Creating a GUID; DDE; Dynamic data exchange; GUIDs; Globally unique identifiers; IUnknown; Interface inheritance; Interfaces; Microsoft GUIDGEN; OCX; OLE; Object linking and embedding; QueryInterface; VBX controls

Back to top


Get On The Web With Delphi 3
Authors John O'Connell Type: Article
Issue 28 : December 1997 View article View source code
Summary In a two-part series, John O'Connell aims to explain (nearly) everything you need to know about writing web applications but didn't know you needed to ask
Keywords CGI; Console applications; Delphi 3; Delphi 3 web components; GET and POST request methods; HTML; HTML forms; HTTP; HTTP status codes; ISAPI and NSAPI; Internet; MIME; TCGIApplication; TWebActionItem; URL encoding; Web applications; Web server; Web server APIs; WebDispatcher; WebModule; WebRequest; WebResponse; WinCGI; World wide web

Back to top


One Last Compile...
Authors Type: Article
Issue 28 : December 1997 View article No source code
Summary Dear Santa
Keywords One Last Compile...

Back to top


Beating The System: Using OpenGL In Delphi Apps
Authors Dave Jewell Type: Article
Issue 28 : December 1997 View article View source code
Summary Dave Jewell shows how to produce high-quality photo-realistic 3D graphics using Microsoft's implementation of OpenGL, and compares OpenGL with DirectX
Keywords 3D graphics; Beating The System; DirectX 3D graphics; GLAUX OpenGL library; GLU32.DLL; OPENGL32.DLL; OpenGL graphics programming; Photo-realistic rendering

Back to top


Update to Issue 27 Beating the System
Authors Dave Jewell Type: Article
Issue 28 : December 1997 View article No source code
Summary Update to Issue 27 Beating the System
Keywords Beating the System; Finding units in EXE files; Issue 27 update; Units compiled in EXE

Back to top


TPageControl.OnChanging
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary TPageControl.OnChanging
Keywords Next page; Obtain page to be changed to; TPageControl.OnChanging

Back to top


Removing components in Delphi 3
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary Removing components in Delphi 3
Keywords Deleting components; Hiding components; Removing components Delphi 3

Back to top


Version information build number
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary Version information build number
Keywords Build number; Version information

Back to top


Custom message dialog caption
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary Custom message dialog caption
Keywords CreateMessageDlg; Message dialog caption; MessageDlg caption

Back to top


SQL Server blob size
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary SQL Server blob size
Keywords BLOB SIZE in BDE; BLOB fields; BLOBs larger than 32Kb; SQL Server blob size

Back to top


Changing paradox table language
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary Changing paradox table language
Keywords Change table language; Paradox table language; Table restructuring; dbiDoRestructure

Back to top


Check if EXE is running
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary Check if EXE is running
Keywords Check if EXE is running; CreateProcess; Process handles; WaitForSingleObject

Back to top


Opening projects
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary Opening projects
Keywords Delphi desktop file; Delphi project files; Opening projects

Back to top


Undo in Edit controls
Authors Brian Long Type: Clinic
Issue 28 : December 1997 View article View source code
Summary Undo in Edit controls
Keywords TEdit undo; Undo handler; Undo in Edit controls; Undo programmatic changes

Back to top


Interfaced classes
Authors Mike Scott Type: Tip
Issue 28 : December 1997 View article View source code
Summary Interfaced classes
Keywords COM and DCOM; Custom interface classes; Interfaced classes

Back to top


Limiting a form's width and height
Authors Xavier Pacheco Type: Tip
Issue 28 : December 1997 View article View source code
Summary Limiting a form's width and height
Keywords Form width and height; Limiting form width & height; WM_GETMINMAXINFO

Back to top


String matching
Authors Mike Orriss Type: Tip
Issue 28 : December 1997 View article View source code
Summary String matching
Keywords Masked string matching; MatchesMask; String matching; TMask class in Delphi 3

Back to top


DBGrid current cell position
Authors Mike Orriss Type: Tip
Issue 28 : December 1997 View article View source code
Summary DBGrid current cell position
Keywords Cell coordinates; DBGrid current cell position; DrawDataCell; TDBGrid

Back to top


Horizontal scrolls for ListBox
Authors Tom Corcoran Type: Tip
Issue 28 : December 1997 View article View source code
Summary Horizontal scrolls for ListBox
Keywords Horizontal scrollbars; Scrollbars on ListBox; TListBox

Back to top


Find oldest and newest files
Authors Tom Corcoran Type: Tip
Issue 28 : December 1997 View article View source code
Summary Find oldest and newest files
Keywords Find oldest and newest files; Unique filename

Back to top


Painting on a GroupBox
Authors Mike Orriss Type: Tip
Issue 28 : December 1997 View article View source code
Summary Painting on a GroupBox
Keywords CopyRect; GroupBox canvas; Painting on a GroupBox

Back to top


Radio group and ActiveControl
Authors Mike Orriss Type: Tip
Issue 28 : December 1997 View article View source code
Summary Radio group and ActiveControl
Keywords ActiveControl; HelpContext radio group; Make radio group active

Back to top


Insert and overtype mode for DBEdit
Authors Mike Orriss Type: Tip
Issue 28 : December 1997 View article View source code
Summary Insert and overtype mode for DBEdit
Keywords Custom DBEdit control; DBEdit; Insert and overtype toggle

Back to top


Cursor key navigation
Authors Gurbhajan Singh Bagh Type: Tip
Issue 28 : December 1997 View article View source code
Summary Cursor key navigation
Keywords Cursor key navigation; SelectNext

Back to top


Fields editor at runtime
Authors Mike Orriss Type: Tip
Issue 28 : December 1997 View article View source code
Summary Fields editor at runtime
Keywords Fields editor at runtime

Back to top


Getting buttons to push themselves
Authors Mike Orriss Type: Tip
Issue 28 : December 1997 View article View source code
Summary Getting buttons to push themselves
Keywords Buttons push themselves; TButton to press itself

Back to top


Beating The System: Exploring Delphi's Closed-Tools API
Authors Dave Jewell Type: Article
Issue 29 : January 1998 View article View source code
Summary Delphi IDE integration for rocket scientists? Dave Jewell has been tinkering in Delphi's innards again and this month shows us how to get to the bits of the Delphi IDE that Borland didn't want to tell you about, spilling the beans on the LibIntf unit and what it can do for you. If you have some neat ideas for Delphi IDE wizards or experts, then this is article is for you!
Keywords Beating the System; COMPLIB.DCL contents; Component palette; Component palette icons; Current time in Delphi IDE; DOS date/time format; Delphi IDE add-ins; Delphi IDE customisation; Delphi IDE dialogs; Delphi IDE internals; Delphi base registry key; Delphi main window handle; Delphi path & exe name; DelphiIDE variable; Experts; Form designer; Form designer options; GetAppHandle; GetBaseRegKey; GetBaseRegistryKey; GetCurTime; GetPathAndBaseExeName; LibHelp unit; LibIntf unit; LibMain unit; LockState; Locking controls in designer; Open Tools API; Proxies unit; Size location Delphi window; TIDelphiIDE; TILibAppBuilder; TILibrary; TInterface; TLHelp32 unit; ToolServices; VCL30 package has LibIntf

Back to top


Here Comes The Flood
Authors Julian Bucknall Type: Article
Issue 29 : January 1998 View article View source code
Summary Julian Bucknall got fed up with TFileStream being slow with lots of small data chunks so he set to and wrote a replacement go-faster version with efficient buffering
Keywords Buffered file stream; Code profiling; File buffers; File handling; Performance enhancement; Streaming; TFileStream; THandleStream; TStream

Back to top


Under Construction: Website Indexing, Part 1
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 29 : January 1998 View article View source code
Summary to do exactly that in Delphi. Even if you aren't into website building, the techniques are really useful for non-web applications too! Would you like to include a search facility on your website? Bob Swart begins a 2-part series describing how
Keywords Binary tree; CGI applications; CGI support unit; Internet; Keywords; Local search engine; Reading binary tree; Storing binary tree on disk; Text indexing; Text searching; Under Construction; Web applications; Website indexing; Website search engine; World wide web; Writing binary tree to file

Back to top


Surviving Client/Server: Indexing Freeform Text
Authors Steve Troxell Type: Article
Issue 29 : January 1998 View article View source code
Summary Ok, so you have loads of information in your databases and some snazz client/server apps to work with it, but then some troublesome user comes along and wants a free text search capability... Steve Troxell comes to the rescue in this month's column, showing how to do what you wouldn't believe is possible in SQL!
Keywords AND OR NOT NEAR searches; Client/server; Creating a text index; Indexing memo fields; Indexing text in SQL; Keywords; Phrase matching; SQL; Scanning memo fields; Searching for phrases; Searching memo fields; Surviving client/server

Back to top


Get On The Web With Delphi 3
Authors John O'Connell Type: Article
Issue 29 : January 1998 View article View source code
Summary John O'Connell presents the concluding part of his discussion of "everything you need to know about writing web applications with Delphi 3 (but didn't know you needed to ask)"
Keywords ActiveX security problems; BDE in ISAPI applications; Bugs in CGI Delphi classes; CGI; Client-side form validation; Configuring NSAPI; Configuring webservers; Cookies; Debugging web applications; Delphi 3; Generating HTML; HTTPAPP unit; Hidden form fields; ISAPI; Internet; Internet applications; Local webservers; NSAPI; Netscape FastTrack 2.0; O'Reilly Website Server 1.1; Saving state in web apps; Set-Cookie; TISAPIApplication; TPageProducer; TWebRequest; TWebResponse; URL encoding and decoding; URL redirection; Updating ISAPI DLLs; Validating HTML forms; Validation with Javascript; Validation with VBScript; Web applications; WebDispatcher; WebModule; Webserver software; Webserver status codes; World wide web

Back to top


Delphi Meets COM: Part 2
Authors Dave Jewell Type: Article
Issue 29 : January 1998 View article No source code
Summary Dave Jewell has the second part of his Editor's guide (read "idiot's guide"!) to writing COM applications in Delphi, laying some more flesh on last month's introductory bones
Keywords CLSID; COM aggregation; COM programming; Class factory; CoCreateInstance; Context menu handler; GUIDs; IContextMenu; IIDs; IMalloc; IShellExtInit; IUnknown interface; Internals of COM calls; QueryInterface; REFIIDs; TComObject; Windows Explorer

Back to top


One Last Compile...
Authors Type: Article
Issue 29 : January 1998 View article No source code
Summary Delphi and the art of hard disk maintenance
Keywords One last compile...

Back to top


MS SQL Server Connections
Authors Brian Long Type: Clinic
Issue 29 : January 1998 View article View source code
Summary MS SQL Server Connections
Keywords Connecting to SQL Server; KeepConnected; SQL Server cursors

Back to top


Nicely Formatted Numbers
Authors Brian Long Type: Clinic
Issue 29 : January 1998 View article View source code
Summary Nicely Formatted Numbers
Keywords Converting float to string; Converting integer to float; FloatToStrF; Format (text); FormatFloat; Number formatting

Back to top


Failed Typecast
Authors Brian Long Type: Clinic
Issue 29 : January 1998 View article View source code
Summary Failed Typecast
Keywords Casting single to longint; Delphi 3; Typecasting

Back to top


Destructor Query
Authors Brian Long Type: Clinic
Issue 29 : January 1998 View article View source code
Summary Destructor Query
Keywords Destroy or Free; Destroying objects

Back to top


SLIB Directory
Authors Brian Long Type: Clinic
Issue 29 : January 1998 View article View source code
Summary SLIB Directory
Keywords SLIB directory; Stack frames

Back to top


Form Creation
Authors Brian Long Type: Clinic
Issue 29 : January 1998 View article View source code
Summary Form Creation
Keywords CreateNew; Creating forms at runtime; Form constructor not found; Form creation; Resource TForm not found

Back to top


Microsoft Web Browser ActiveX
Authors Brian Long Type: Clinic
Issue 29 : January 1998 View article View source code
Summary Microsoft Web Browser ActiveX
Keywords ActiveX wrappers; Installing ActiveX; MS Web Browser ActiveX; TWebBrowser

Back to top


Writing A Cross Reference Tool
Authors Marco Cant∙ Type: Article
Issue 30 : February 1998 View article View source code
Summary Marco Cant∙ describes a clever utility which cross-references the variables, functions, procedures and more from all your source code files, then presents the results as HTML files; he also shows how the same techniques can be used to publish databases on the web
Keywords Converting database to HTML; Database cross-referencing; File handling; Generating HTML; Generating HTML for database; HTML; Optimisation; Parser; Parsing source code files; Performance enhancement; Publishing database as HTML; Scanning files; Searching for files; Sorting and searching; Source code cross reference; Source code indexing; Streams; TFileStream; Translate Pascal to HTML

Back to top


Ballet Mechanique
Authors Julian Bucknall Type: Article
Issue 30 : February 1998 View article View source code
Summary How can you find items in a list really quickly? Julian Bucknall knows how to get your data dancing to the right tune and this month begins his explanation of hash tables
Keywords Algorithms; Binary search; Collision resolution; ELF hash; Hash collisions; Hash functions; Hash tables; Hashing; Linear probing; Normal distribution; Optimisation; Performance enhancement; Poisson distribution; Search algorithms; Searching and indexing; TStringList limitations

Back to top


Under Construction: Website Indexing, Part 2
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 30 : February 1998 View article View source code
Summary Want to add a search engine to your website? Bob Swart has all the code you need: building on last month's instalment, he adds support for AND, NOT and OR keywords in queries and plugs in some performance boosts too!
Keywords Binary trees; CGI; HTML meta tags; Hash tables; Hashing; Internet; Internet applications; Local search engine; Optimisation; Performance enhancement; Searching with AND OR NOT; Text searching; Under Construction; Web applications; Website indexing; Website search engine; World wide web

Back to top


Delphi Meets COM: Part 3
Authors Dave Jewell Type: Article
Issue 30 : February 1998 View article View source code
Summary This month Dave Jewell has some real COM projects for you to get to grips with, including working with Shell context menus and a nifty fix to stop multiple copies of Delphi being opened from Explorer
Keywords .REG files; CLSIDFromProgID; COM programming; COMOBJ unit; Context menu; Context menu registration; CreateOLEObject; Creating GUIDs; Drag and drop; GUIDs and CLSIDs; MS Word Basic; Microsoft Word; OLE Automation; PROGID; ProgIDToClassID; Registry; Source viewer; TContextMenu; Viewing files in Explorer; WM_DROPFILES; Windows API; Windows Explorer; Word.Basic registry key

Back to top


One Last Compile...
Authors Type: Article
Issue 30 : February 1998 View article No source code
Summary Wake up and smell the coffee
Keywords One last compile...

Back to top


Fatal Startup Error
Authors Brian Long Type: Article
Issue 30 : February 1998 View article View source code
Summary Brian Long looks in detail at why deleting declarations of 'decorative' objects from your source files causes problems, with insights in to Delphi's handling of forms, RTTI and more
Keywords Class not found error; Delphi form internals; Fatal startup error; Field class table; Field table; Form creation; Form files; Global class list; InsertComponent; Method table; RTTI; ReadComponentRes; RegisterClass; Registering a class; Removing code from forms; Run time type information; Smart linking; Streams; TObject.FieldAddress; TObject.MethodAddress; TObject.MethodName; TReader; Unwanted declarations; Virtual constructors

Back to top


Beating The System: Exploring Delphi's Closed-Tools API, Part 2
Authors Dave Jewell Type: Article
Issue 30 : February 1998 View article View source code
Summary Dave Jewell continues his detailed examination of Delphi's hidden LibIntf unit, putting the Delphi IDE on auto-pilot with the TILibrary class
Keywords Beating the System; Control locking; CurrentGroup; Delphi 3 IDE; Design time packages; Experts; Find selected component; GetActiveForm; GetComponentBitmap; GetFirstSelectionType; GetOleCtrlHelp; GetProperties; GetSelection; GetSelectionName; GetSelectionType; HideWindows; IDE add-ins; IsTopMostForm; LibIntf unit; LockState; Open Tools API; Packages; Registering experts; ShowWindows; TComponentList; TIComponentInterface; TIDelphiIDE; TIFormInterface; TILibrary; Un-registering experts

Back to top


The Ultimate TDataLink?
Authors Joanna Carter Type: Article
Issue 30 : February 1998 View article View source code
Summary Joanna Carter checks out the best way for data-aware component writers to link data to controls
Keywords Component building; Creating components; Data-aware controls; Is datasource valid?; TDataLink; TDataSource; TFieldDataLink; TGridDataLink

Back to top


Loading Arbitrary Forms
Authors Brian Long Type: Clinic
Issue 30 : February 1998 View article View source code
Summary Loading Arbitrary Forms
Keywords Form resources; LoadPackage; Loading arbitrary forms; Reading form files; UnloadPackage

Back to top


Design-Time Packages
Authors Brian Long Type: Clinic
Issue 30 : February 1998 View article View source code
Summary Design-Time Packages
Keywords Design-Time Packages; Packages

Back to top


Alias Property Editor
Authors Brian Long Type: Clinic
Issue 30 : February 1998 View article View source code
Summary Alias Property Editor
Keywords Alias Property Editor; GetDatabaseNames; Listing database aliases; Writing property editors

Back to top


Index Combobox
Authors Brian Long Type: Clinic
Issue 30 : February 1998 View article View source code
Summary Index Combobox
Keywords GetIndexNames; Index Combobox; IndexFieldNames; Listing availale indexes

Back to top


IndexFieldNames Exception
Authors Brian Long Type: Clinic
Issue 30 : February 1998 View article View source code
Summary IndexFieldNames Exception
Keywords Descending index; GetIndexForFields; IndexFieldNames; IndexFieldNames Exception; IndexName

Back to top


Pictures In Databases
Authors Brian Long Type: Clinic
Issue 30 : February 1998 View article View source code
Summary Pictures In Databases
Keywords LoadFromFile; Pictures In Databases; Storing bitmaps in tables

Back to top


Errata
Authors Brian Long Type: Clinic
Issue 30 : February 1998 View article View source code
Summary Errata
Keywords Clinic issue 27 error; Resource explorer

Back to top


Mike's Corner
Authors Mike Orriss Type: Article
Issue 30 : February 1998 View article View source code
Summary The first instalment of Mike Orriss' new column. Indexed properties, clean screen updates and a difference engine.
Keywords Clean screen updates; File differences; File patching; Indexed properties; LockWindowUpdate; Mike's Corner; Parameterised properties; Screen flicker; TLockWindow; TreeView controls; Updating TreeView

Back to top


Surviving Client/Server: Three- Tier Applications With MIDAS
Authors Steve Troxell , Scott Samet Type: Article
Issue 31 : March 1998 View article No source code
Summary Steve Troxell and colleague Scott Samet explain what tiers are all about, why they are important, and show how to write multi-tier applications with TClientDataSet, TProvider, and the related new components from Delphi 3
Keywords Automatic load balancing; Borland Database Engine, BDE; Briefcase applications; Business rules; COM, DCOM; Client/server; Data caching; Distributed COM; MIDAS; Middleware; Multi-tier architecture; OLE Automation; Object brokers; OnReconcileError; Remote Data Module; Remote Dataset; Server class instancing; Surviving client/server; TCP/IP; TClientDataset; TDataModule; TProvider; TRemoteServer; Three-tier applications; Two-tier applications; Type library editor

Back to top


Web Commerce With Delphi: Live Transaction Processing
Authors Peter Hyde Type: Article
Issue 31 : March 1998 View article View source code
Summary Peter Hyde returns to Web Commerce, describing the options available for implementing live credit card transaction processing, complete with ready to run sample code
Keywords Banking terms; Cybercash; E-Commerce; ICVerify; Internet applications; Live transaction processing; META REFRESH HTML tag; Online transactions; Transaction queuing; Validating credit cards; Web applications; Web commerce; World wide web

Back to top


Hang Onto Yourself
Authors Julian Bucknall Type: Article
Issue 31 : March 1998 View article View source code
Summary Julian Bucknall concludes his 2-parter exploration of hash tables and how to use them in your Delphi applications to make finding text strings in long lists really quick, plus there's a natty hash-index record manager ready to plug right into your programs!
Keywords Collision resolution; Dynamic hash tables; Extensible hashing; Hash indexed record manager; Hash table limitations; Hash tables; Hash tables on disk; Hashing; Linear hashing; Linear probing; Record buckets

Back to top


Beating The System: Exploring Delphi's Closed-Tools API, 3
Authors Dave Jewell Type: Article
Issue 31 : March 1998 View article View source code
Summary Dave Jewell concludes his examination of Delphi's LibIntf unit, with a peek into the workings of the TIModule and TIForm classes
Keywords Beating the System; Customising Delphi IDE; Delphi IDE API; Design time form image; Get component name; GetActiveForm; GetCompCount; GetCompName; GetDesigner; GetFormImage; LibIntf unit; Make image of form; Number of components on form; Open Tools API; Proxies; TFormDesigner; TICompInfo; TIForm class; TILibrary; TLibForm; TWindowDesigner

Back to top


One Last Compile...
Authors Type: Article
Issue 31 : March 1998 View article No source code
Summary Testing times
Keywords One last compile...

Back to top


Under Construction: A Simple Spelling Checker
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 31 : March 1998 View article View source code
Summary Bob Swart describes the implementation of a spelling checker using minimal resources: ideal for when the Full Monty would be over the top!
Keywords Binary search; Binary tree; Dictionaries and word lists; Spell checking; Spelling checker; Spelling suggestions; Under Construction

Back to top


Delphi Meets COM: Part 4
Authors Dave Jewell Type: Article
Issue 31 : March 1998 View article View source code
Summary This month Dave Jewell describes some more handy shell extensions: copy hook handlers, icon handlers and property sheet handlers, plus introduces Delphi's support for dispatch interfaces
Keywords Adding property sheet pages; COM; Context menu handlers; Copy hook handlers; Copying folders; Deleting folders; Delphi meets COM; DispID; Dispatch interface; Dispinterface; Extract icon from file; ExtractIcon; GetIconLocation; IAmbientDispatch; IDispatch; IExtractIcon; IShellExtInit; IShellPropSheetExt; Icon handlers; IpersistFile; Modify file icon in Explorer; Moving folders; Printer status change; Property sheet handlers; Renaming folders; Shell extensions; Type library; Windows Explorer

Back to top


Writing Microsoft SQL Server Extended Stored Procedures
Authors Berend de Boer Type: Article
Issue 31 : March 1998 View article View source code
Summary SQL Server has the powerful capability to make functions in DLLs available as stored procedures, and Berend de Boer has a nifty framework which makes developing such DLLs a piece of cake
Keywords DLLs; Extended stored procedures; MS Transact SQL and Delphi; MS Transact SQL datatypes; Open Data Services; SQL Server; SQL limitations; Writing DLLs

Back to top


Table Source Generator Expert
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 31 : March 1998 View article View source code
Summary Bob Swart describes development of a Delphi Expert which automatically creates source code to regenerate database tables and index files: ideal for plugging into your application so you don't have to ship empty table files!
Keywords Borland Database Engine BDE; Convert table to HTML; CreateTable; Experts; Generating Paradox indexes; Generating Paradox tables; Paradox table fields; Table source generator; TableBob Wizard; Writing experts

Back to top


Delphi 3 Display Glitch
Authors Brian Long Type: Clinic
Issue 31 : March 1998 View article View source code
Summary Delphi 3 Display Glitch
Keywords Delphi 3 Display Glitch; Palette display problems; comctl32.dll

Back to top


Troublesome RichEdits
Authors Brian Long Type: Clinic
Issue 31 : March 1998 View article View source code
Summary Troublesome RichEdits
Keywords Clipboard; Copying TRichEdit contents; Copying using streams; Streams; TMemoryStream; TRichEdit

Back to top


Rounding Inconsistency
Authors Brian Long Type: Clinic
Issue 31 : March 1998 View article View source code
Summary Rounding Inconsistency
Keywords Bankers rounding; Round function; Rounding Inconsistency; Rounding floating points

Back to top


Icons, Metafiles And Graphic Fields
Authors Brian Long Type: Clinic
Issue 31 : March 1998 View article View source code
Summary Icons, Metafiles And Graphic Fields
Keywords Blob fields; EInvalidGraphic; Graphic fields; Icons; JPEG; LoadFromFile; Metafiles; Storing icon in database; Storing metafile in database; TBlobField

Back to top


Thunking: Calling 16-Bit Code From 32-Bit
Authors Brian Long Type: Clinic
Issue 31 : March 1998 View article View source code
Summary Thunking: Calling 16-Bit Code From 32-Bit
Keywords Calling 16-bit code from 32; QT_Thunk; Thunking; Windows 95 OSR2

Back to top


Simulating Multiple Inheritance With Delphi Interfaces
Authors Marco Cant∙ Type: Article
Issue 32 : April 1998 View article View source code
Summary Marco Cant∙ shows how to do what some might believe is the unthinkable using the power and flexibility of interfaces, introduced in Delphi 3
Keywords Abstract classes; Abstract virtual methods; Array of interface variables; COM programming; Delphi 3; GUIDs; Interfaces; Multiple inheritance; Object oriented programming; Polymorphism; Reference counting; TInterfacedObject

Back to top


Beating The System: Delphi Meets IntelliMouse
Authors Dave Jewell Type: Article
Issue 32 : April 1998 View article View source code
Summary Dave Jewell has been playing with his fancy new wheel-equipped mouse and has found how to make your applications take full advantage of its features
Keywords Beating the System; Custom Windows messages; Detecting Windows 98; GetVersionEx; IntelliMouse; Mouse programming; Mouse scrolling; Mouse wheel; Mouse wheel messages; RegisterWindowMessage; Three-button mouse; WM_MBUTTONDBLCLK; WM_MBUTTONDOWN; WM_MBUTTONUP; Windows 98; Windows NT 4, NT 5; Windows Version

Back to top


Sweet Dreams
Authors Julian Bucknall Type: Article
Issue 32 : April 1998 View article View source code
Summary Julian Bucknall writes some easier to use file search routines, with regular expression matching for filenames
Keywords Better FindFirst, FindNext; Directory search; File finding; File name matching; File search; FindClose; GREP; Greedy algorithms; Linked list; Parsing; Pattern matching; Regular expression engine; Regular expressions; Text matching; Wildcards

Back to top


Surviving Client/Server: OLE Automation With SQL Server
Authors Steve Troxell Type: Article
Issue 32 : April 1998 View article View source code
Summary Steve Troxell creates an OLE interface between Delphi and Microsoft's relational database management system, using Distributed Management Objects
Keywords BDE disadvantages; COM and DCOM; Client/server; DMO; DMO type library; MS SQL Server; OLE Automation; OLE interface for SQL Server; SQL; SQL Server API; Surviving Client/Server; Type library editor

Back to top


Surviving SQL: TBatchMove
Authors Steve Troxell Type: Article
Issue 32 : April 1998 View article No source code
Summary TBatchMove can be awfully slow: Steve Troxell shows how to move data between SQL tables easily and much more quickly
Keywords Changing table structure; Copying database tables; SQL; SQL INSERT; Surviving SQL; TBatchMove too slow

Back to top


Under Construction: A Query HTML CGI-Form Wizard
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 32 : April 1998 View article View source code
Summary Tired of hand-coding all your CGI forms in HTML? No problem, `Dr.Bob' Swart has a wizard to do the job for you, enhancing Delphi 3's Web Modules. Along the way he visits property and components editors too
Keywords CGI forms; Component Editors; Delphi 3; HTML form wizard; Internet; Packages; Property Editors; SQL query to HTML converter; Under Construction; WWW; Web applications; Wizards and Experts

Back to top


One Last Compile...
Authors Type: Article
Issue 32 : April 1998 View article No source code
Summary Thanks to Delphi, you may never have to visit your kitchen again
Keywords One Last Compile...

Back to top


Delphi Meets COM: Part 5
Authors Dave Jewell Type: Article
Issue 32 : April 1998 View article No source code
Summary This month Dave Jewell dives into OLE automation, covering OLE controllers, early and late binding, OLE servers, type libraries and more
Keywords Automation server; COM programming; Dispinterface; Dual interfaces; Early binding; IDispatch; Late binding; OLE Automation; OLE controllers; OLE interfaces; OLEVariant type; Type library editor; Variant type

Back to top


Form Printing DOS-Style
Authors Paul Warren Type: Article
Issue 32 : April 1998 View article View source code
Summary Paul Warren digs out some old DOS programming techniques and constructs some surprisingly handy form printing routines that don't need any fancy reporting components
Keywords DOS-style forms; Fonts; Form files; Forms without report tools; Inserting data into forms; Printing forms

Back to top


Hooks Unsnagged
Authors Warren Kovach Type: Article
Issue 32 : April 1998 View article View source code
Summary Warren Kovach has discovered why Windows hook programs written in Delphi (and other environments too) can cause access violations and provides some fixes
Keywords Delphi 3; Error 216 on enter password; Masking floating point error; Non-Microsoft compilers; OpenGL and hooks; OpenGL floating point errors; Password dialog conflicts; Trapping keystrokes; Windows hook errors; Windows hooks

Back to top


Grid Cell Positioning
Authors Brian Long Type: Clinic
Issue 32 : April 1998 View article View source code
Summary Grid Cell Positioning
Keywords Change current DBGrid cell; Grids; SelectedIndex

Back to top


Application And Window Handles
Authors Brian Long Type: Clinic
Issue 32 : April 1998 View article View source code
Summary Application And Window Handles
Keywords Application handles; Calling other programs; CreateProcess; IsWindowVisible; Primary thread handle; Program instance handle; ShellExecute; ShellExecuteEx; Window handles

Back to top


DLL Failure
Authors Brian Long Type: Clinic
Issue 32 : April 1998 View article View source code
Summary DLL Failure
Keywords .DLL extension required; DLL import declaration; DLL not found error; Moving 16-bit to 32-bit

Back to top


Playing Videos
Authors Brian Long Type: Clinic
Issue 32 : April 1998 View article View source code
Summary Playing Videos
Keywords AVI and WAV files; AVI or WAV as resource; Linking in resources; Merge resources into EXE; PlaySound; Playing videos; ResHandle; Resouce compiler; Resource scripts; SndPlaySound; TAnimate; TMediaPlayer; TResourceStream

Back to top


Multiple Undo
Authors Warren Kovach Type: Article
Issue 33 : May 1998 View article View source code
Summary Large shrinkwrapped applications often have a multi-level undo capability built in: nice, but isn't it fiendishly complex to create? Not so, says Warren Kovach, who takes you through the process step by step, with example projects too
Keywords Command objects; Convert keycode to character; Data structures; Drawing undo; EM_UNDO message; Extending TMemo undo; Multiple undo; Redo; Self-undoing objects; Stacks; TList as a stack object; Text editing undo; ToAscii; Undo; Undo in standard controls; WM_INITMENUPOPUP

Back to top


Round & Round
Authors Julian Bucknall Type: Article
Issue 33 : May 1998 View article View source code
Summary Julian Bucknall goes round and round and round... and asks how random your numbers really are. Random number generators pop up surprisingly often and the numbers they generate can be surprisingly un-random!
Keywords Chi-Square distribution; Coupon Collector's test; Degrees of freedom; Gap test; Linear congruential method; Middle-square method; Mitchell & Moore generator; Poker test; Random function; Random number generators; Random numbers; Randomize procedure; Sum of squares test; Testing randomness

Back to top


Surviving Client/Server
Authors Steve Troxell Type: Article
Issue 33 : May 1998 View article No source code
Summary Steve Troxell describes code tables and how best to use them
Keywords Client/server; Code tables; Lookup tables; SQL; Surviving client/server

Back to top


Creating A File Packing List
Authors Paul Warren Type: Article
Issue 33 : May 1998 View article View source code
Summary Have you ever missed a key file out of a source code suite when sending it to someone else? Paul Warren has a nifty utility to fix just that problem, which also gives insight into parsing and searching
Keywords Dependent units; File dependencies; File packing list; Files in uses clause; Files required by component; Missing files; Parsing source code files; Parsing uses clause; Recursion; Searching; Source dependency; TParser

Back to top


Beating the System: Delphi Meets IntelliMouse, Part 2
Authors Dave Jewell Type: Article
Issue 33 : May 1998 View article View source code
Summary Dave Jewell wraps up his discussion of adding MS IntelliMouse support to your applications with a re-usable resource to make it ever so easy, plus clever code to IntelliMouse-enable the Delphi 3 IDE!
Keywords Beating the system; Borland editor engine; DFWEDIT.DLL; Delphi 3 IDE; IDE enhancements; IntelliMouse; IntelliMouse in Delphi IDE; IntelliPoint software errors; MSH_WHEELSUPPORT_MSG; Mouse wheel; TDesktopForm; TEditWindow; TTimer problems; Timers without TTimer

Back to top


Interposer Classes
Authors Stephen Posey Type: Article
Issue 33 : May 1998 View article View source code
Summary Stephen Posey describes a clever way of exposing extra (usually hidden) properties and methods, as well as adding new ones, in components without all the hassle of creating a new component.
Keywords Add methods to component; Add properties to component; Amending existing components; Dummy classes; Expose Canvas in TPanel; Exposing hidden properties; Exposing private properties; Form inheritance in Delphi 1; Interposer classes; TApplication

Back to top


Under Construction: Internet Database Applications
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 33 : May 1998 View article View source code
Summary In response to reader feedback, Bob Swart discusses how to create real-world CGI applications for the web without using Delphi 3's WebModules: this means you don't need the Client/Server Edition of Delphi 3 to create web apps!
Keywords CGI actions; CGI applications; CGI form wizard; CGI performance problems; Database editing on internet; Error reporting tool; HTML forms; Internet; Under construction; Web applications; Web database application; Web with no web modules

Back to top


One Last Compile...
Authors Type: Article
Issue 33 : May 1998 View article No source code
Summary I know exactly what I want (he said)
Keywords One last compile

Back to top


Delphi Meets COM: Part 6
Authors Dave Jewell Type: Article
Issue 33 : May 1998 View article View source code
Summary Dave Jewell continues his in-depth trawl through the wonders of COM programming with an overview of ActiveX, including how to make your own ActiveX controls look truly professional
Keywords ActiveX; Building ActiveX controls; Custom Windows 95 desktop; Delphi meets COM; Desktop is listview control; OCX; Progman window class; Program Manager; Read only property ActiveX; SHELLDLL_DefView; SysListView32; Version resource in ActiveX; Visual Basic 4 ActiveX

Back to top


Radio Group Problem
Authors Brian Long Type: Clinic
Issue 33 : May 1998 View article View source code
Summary Radio Group Problem
Keywords Access radio group members; Change cursor in radio group; ComponentState property; Controls property; Radio buttons; Radio group problem; cm_CursorChanged

Back to top


Application Time-Out
Authors Brian Long Type: Clinic
Issue 33 : May 1998 View article View source code
Summary Application Time-Out
Keywords Application Time-Out; CallNextHookEx; Close app after fixed time; Detect keyboard inactivity; Detect mouse inactivity; GetCurrentThreadID; SetWindowsHookEx; TTimer; Thread identified

Back to top


Event Complexity
Authors Brian Long Type: Clinic
Issue 33 : May 1998 View article View source code
Summary Event Complexity
Keywords Controlling chained events; Event complexity; Prevent on-click events

Back to top


Updating System Files
Authors Brian Long Type: Clinic
Issue 33 : May 1998 View article View source code
Summary Updating System Files
Keywords Abbreviate filename; MinimizeName; MoveFileEx; MoveFile_Delay_Until_Reboot; Updating System Files; Updating files in use; WinInit program; Windows NT

Back to top


Real Time 3D
Authors Ian Ringrose , Joseph Steel Type: Article
Issue 34 : June 1998 View article View source code
Summary Ian Ringrose and Joseph Steel describe the development of a real time animated 3D graphics system in Delphi using OpenGL, with textures, transparency and fog effects. They even created a custom component along the way to make life simpler
Keywords 3D scale models; Animated graphics; Animation; Fog effects; OpenGL; OpenGL, Windows 95 problems; Real time 3D graphics; Silicon Graphics OpenGL; Transparency effects; VRML

Back to top


Algorithms Alfresco: Love Plus One
Authors Julian Bucknall Type: Article
Issue 34 : June 1998 View article View source code
Summary In the first instalment of his brand new monthly column on matters algorithmic, Julian Bucknall describes ternary trees: combining the speed of access of a hash table and the alphabetically sorted nature of a binary tree.
Keywords Algorithms Alfresco; Binary trees; Hash tables; Partial match searching; Searching algorithms; Storing sorted text strings; TStringList limitations; Ternary search trees; Trie

Back to top


One Last Compile...
Authors Type: Article
Issue 34 : June 1998 View article No source code
Summary Delphi, spitting and the path to true happiness.
Keywords One last compile

Back to top


Delphi For Time Travellers
Authors Brandon Smith Type: Article
Issue 34 : June 1998 View article View source code
Summary If you thought the year 2000 brings problems, try going backwards a few hundred years into the morass of historical calendar systems, with days missing here there and everywhere... But never fear, Brandon Smith has done his homework well and presents a custom component to make sense of it all.
Keywords Calendar systems; Date problems; Dates in Delphi; Dates in different countries; DecodeDate; EncodeDate; Gregorian calendar; Julian calendar; Julian day numbering; Leap years; Length of a year; Non-existent dates; Problems with early dates; SYSUTILS; Scaliger cycle; TDateTimePicker; Year 1752; Year 2000

Back to top


Surviving Client/Server: Object Oriented Databases
Authors Steve Troxell Type: Article
Issue 34 : June 1998 View article No source code
Summary Steve Troxell begins a tour of object oriented database systems this month, ebunking the jargon and showing how you can use them in practice, with hints on the real performance gains to be had
Keywords Object identifiers; Object oriented databases; Relational database systems; Surviving client/server

Back to top


Beating The System: Add Extra Richness To RichEdit Controls!
Authors Dave Jewell Type: Article
Issue 34 : June 1998 View article View source code
Summary Dave Jewell thinks Delphi's TRichEdit is great, but he knows it could be even better... This month our sleuth unpicks Microsoft's enhanced Rich Edit 2.0 DLL and shows how to use its snazzy added features in your Delphi projects: multi-level undo, Unicode, automatic URL detection and more
Keywords Beating the System; CFE_LINK text effect; COMCTRLS unit; Common controls; Detecting URLs; Hyperlinks in rich text; RICHED.DLL; RICHED20.DLL; RICHED32.DLL; RTF format; Rich text; RichEdit 2.0; ShellExecute; TRichEdit; Windows 95; Windows 98; Windows NT; em_AutoURLDetect message

Back to top


Under Construction: Database Web Server Extensions
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 34 : June 1998 View article View source code
Summary Following on from last month's instalment, Bob Swart shows how to convert a CGI database application into an ISAPI DLL, for dramatically improved performance, all without Web Modules (so Delphi 3 Client/Server is not a requirement!)
Keywords CGI versus ISAPI; Debugging ISAPI DLLs; Getting web server info; ISAPI and BDE; ISAPI support units; ISAPI without Web Modules; Internet; IntraBob; Maximum BDE sessions; Multiple database sessions; Multithreading in web apps; TSession; Under construction; Updating ISAPI DLLs; Web applications; Web database applications; Web server; World Wide Web

Back to top


Delphi Meets COM: Part 7
Authors Dave Jewell Type: Article
Issue 34 : June 1998 View article View source code
Summary Dave Jewell gets down and dirty with DAX: Delphi's ActiveX framework. He describes the code the wizard generates for you and how to tweak it to make your ActiveX controls even better
Keywords $E extension directive; ActiveX property pages; ActiveX property sheets; Building ActiveX controls; COM programming; ComServ unit; ComServer variable; DLLRegisterServer; DefinePropertyPage; Delphi ActiveX framework DAX; Delphi meets COM; DllUnregisterServer; MODULES resource; RT_RCDATA resource type; TComServer

Back to top


Bad Uninstall
Authors Brian Long Type: Clinic
Issue 34 : June 1998 View article View source code
Summary Bad Uninstall
Keywords MultiEdit bad uninstall; Registry; Removing Delphi experts

Back to top


Control Looping
Authors Brian Long Type: Clinic
Issue 34 : June 1998 View article View source code
Summary Control Looping
Keywords Components array; Control looping; Controls array; FindComponent; Finding all controls on form; Loop through controls

Back to top


BDE Errors
Authors Brian Long Type: Clinic
Issue 34 : June 1998 View article View source code
Summary BDE Errors
Keywords BDE error codes; BDE error messages; BDE import units; BDE.INT; Borland Database Engine; DBIERRS.INT; DBIPROCS.INT

Back to top


Trapping Database Exceptions
Authors Brian Long Type: Clinic
Issue 34 : June 1998 View article View source code
Summary Trapping Database Exceptions
Keywords Default exception handler; EDBEngineError exception; Exeption handling; Global exception handler; Trapping database exceptions; Trapping key violations

Back to top


Captionless Dragging
Authors Brian Long Type: Clinic
Issue 34 : June 1998 View article View source code
Summary Captionless Dragging
Keywords Dragging captionless forms; Dragging controls on a form; Moving windows in code; sc_Move; wm_NCHitTest; wm_SysCommand message

Back to top


Resetting Autoincrement Fields
Authors Brian Long Type: Clinic
Issue 34 : June 1998 View article View source code
Summary Resetting Autoincrement Fields
Keywords DbiDoRestructure; Paradox auto increment; Reset autoincrement fields

Back to top


Delphi 4 Preview
Authors Brian Long Type: Article
Issue 35 : July 1998 View article No source code
Summary Brian Long summarises the new goodies to be found in Delphi's latest version, due to hit the streets as you read this...
Keywords Delphi 4 preview

Back to top


Beating The System: RichEdit Controls, Part 2
Authors Dave Jewell Type: Article
Issue 35 : July 1998 View article View source code
Summary Dave Jewell concludes his look at Rich Edit 2.0, showing how to add multiple undo/redo and encapsulate the URL hyperlink functionality
Keywords Beating the System; Hyperlinks; Multiple undo/redo; Rich Edit 2.0; Rich text editor; RichEdit controls; Text editor; Undo and redo

Back to top


DBGrid Multi-Selection
Authors Dave Bolt Type: Article
Issue 35 : July 1998 View article View source code
Summary Dave Bolt discusses how to implement multi-selection in a DBGrid control
Keywords DBGrid multiple selection; Database bookmarks; Selected rows in DBGrid; TBookmarkList; dgMultiSelect

Back to top


Under Construction: Automated Email
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 35 : July 1998 View article View source code
Summary Bob Swart shows how to automatically send email from your webserver using the SMTP protocol (but not for Spam of course, ok everyone?!)
Keywords Automated email; Internet; Mail servers; SMTP email protocol; Sending email from webserver; TCP/IP protocol; TClientSocket; Under construction

Back to top


The Rise And Fall Of TObject
Authors Hallvard Vassbotn Type: Article
Issue 35 : July 1998 View article View source code
Summary Hallvard Vassbotn shares the ins and outs of TObject, showing how to do your own memory management and save some precious kilobytes
Keywords CleanupInstance; Constructor and destructor; FreeInstance; InitInstance; Memory management; NewInstance; Object construction; Object destruction; TObject; _ClassCreate

Back to top


Algorithms Alfresco: Call Me
Authors Julian Bucknall Type: Article
Issue 35 : July 1998 View article View source code
Summary Julian Bucknall gives us the low-down on recursion: what is it, when to use it and when to avoid it, and how to avoid it when you need to!
Keywords Algorithms Alfresco; Fibonacci numbers; Hash tables: correction; Recursion; Recursive routines; Removing recursion; Stack usage

Back to top


Manipulating Runtime Type Information
Authors Philip Brown Type: Article
Issue 35 : July 1998 View article View source code
Summary Phil Brown shows how to manipulate runtime type information (RTTI) to advantage in your projects, describing a neat technique for writing and reading object data using RTTI
Keywords Exporting data using RTTI; Importing data using RTTI; RTTI; RTTI for data storage; RTTI for databases; Runtime type information; SQL

Back to top


Surviving Client/Server: ODBMS In Practice, Part 1
Authors Steve Troxell Type: Article
Issue 35 : July 1998 View article No source code
Summary Steve Troxell continues his tour of Object Oriented Database Systems, this month showing some examples using Computer Associates' Jasmine database system
Keywords Computer Associates Jasmine; ODBMS; Object oriented databases; Object query language

Back to top


One Last Compile...
Authors Type: Article
Issue 35 : July 1998 View article No source code
Summary Databases: the painful truth
Keywords One last compile

Back to top


Delphi Meets COM: Part 8
Authors Dave Jewell Type: Article
Issue 35 : July 1998 View article View source code
Summary Dave Jewell wraps up his discussion of ActiveX controls and reveals another of Delphi's intimate secrets...
Keywords ActiveX control libraries; ActiveX property pages; BorIDE unit; Building ActiveX controls; COM programming; Delphi 4 COM support; Delphi meets COM; LibIntf unit; Native Tools API; TLibAppBuilder

Back to top


BDE Administrator Amnesia
Authors Brian Long Type: Clinic
Issue 35 : July 1998 View article View source code
Summary BDE Administrator Amnesia
Keywords BDE Administrator problems

Back to top


Bad BDE Installation
Authors Brian Long Type: Clinic
Issue 35 : July 1998 View article View source code
Summary Bad BDE Installation
Keywords BDE installation problems; Borland Database Engine; InstallShield and BDE; Registry

Back to top


Dynamic Fonts
Authors Brian Long Type: Clinic
Issue 35 : July 1998 View article View source code
Summary Dynamic Fonts
Keywords AddFontResource; Dynamic fonts; RemoveFontResource

Back to top


Cached Updates Problem
Authors Brian Long Type: Clinic
Issue 35 : July 1998 View article View source code
Summary Cached Updates Problem
Keywords Cacded updates problem; Multiple lock files; Paradox databsases

Back to top


Erratic MDI Menu
Authors Brian Long Type: Clinic
Issue 35 : July 1998 View article View source code
Summary Erratic MDI Menu
Keywords MDI menu problems

Back to top


Shipping Bitmaps
Authors Brian Long Type: Clinic
Issue 35 : July 1998 View article View source code
Summary Shipping Bitmaps
Keywords Including bitmap resources; Linking in resource files; Resource compiler; Resources in DLL; Resources in EXE; Resources in packages

Back to top


Graphic File Extensions
Authors Brian Long Type: Clinic
Issue 35 : July 1998 View article View source code
Summary Graphic File Extensions
Keywords File open dialogs; FileFormatList; Graphic file extensions; GraphicFileMask

Back to top


Office Integration
Authors Brian Long Type: Clinic
Issue 35 : July 1998 View article View source code
Summary Office Integration
Keywords Microsoft Outlook; OLE Automation; Working with MS Office

Back to top


Mix-In It Up In Delphi
Authors David Baer Type: Article
Issue 36 : August 1998 View article View source code
Summary David Baer shows that Interfaces are useful for more things than COM programming, with a simple example of a server component communicating with client components
Keywords COM programming; GUIDs and as operator; IUnknown; Interfaces; Mix-In classes; Multiple inheritance; No need for GUIDs; QueryInterface; TInterfacedObject; TPersistent; _AddRef; _Release

Back to top


Under Construction: RobotBob Internet Agent
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 36 : August 1998 View article View source code
Summary Bob Swart builds on his automatic email project from last month to show how to create internet agents and robots to automate tedious tasks like checking websites for new material and fetching files via FTP
Keywords CGI; Delphi 4 dynamic arrays; Email mailing lists; FTP; FTP downloading; Internet agents; Internet robots; InternetReadFile; Listserver program; POP3 mail; Reading email; Remotely end program; Remotely start program; Run program by email; SMTP mail; Sending email; UUENCODE; Under Construction; WININET

Back to top


ImageList In Depth
Authors Dave Collie Type: Article
Issue 36 : August 1998 View article View source code
Summary Dave Collie describes the power that lurks in the TImageList component: it can do far more than immediately meets the eye
Keywords Image masks; Image overlays; ImageList drag and drop; Overlaid images; TImageList; Transparency in images

Back to top


Algorithms Alfresco: Hunting High And Low
Authors Julian Bucknall Type: Article
Issue 36 : August 1998 View article View source code
Summary Julian Bucknall discusses text searching using the Boyer-Moore algorithm, showing how it is so much faster than Delphi's built-in Pos function
Keywords Algorithms Alfresco; Boyer-Moore algorithm; Pattern matching; Pos function; String searching; Ternary tree error corrected; Text searching

Back to top


New COM Features In Delphi 4: An Overview
Authors Steve Teixeira Type: Article
Issue 36 : August 1998 View article No source code
Summary Steve Teixeira has taken the reins of our series on COM programming from Dave Jewell and this month introduces the new COM-related goodies to be found in Delphi 4
Keywords ActiveX control development; ActiveX framework; Aggregation; Apartment threading; Both threading; COM object wizard; COM programming; Delphi 4; Event support; Free threading; IObjectControl; Implementation by delegation; Implements directive; Microsoft Transaction Server; Multi-threading; OLE automation; Remote DataModules; Single threading; Threading models

Back to top


Using Windows Resources
Authors Philip Brown Type: Article
Issue 36 : August 1998 View article View source code
Summary Phil Brown gives us some practical hints on using Windows resources to best advantage in our Delphi apps
Keywords $R compiler directive; BITMAP resource; CURSOR resource; ICON resource; Linking resource files; RCDATA resource; Resource compiler; Resource file syntax; Resource files; STRINGTABLE resource; TResourceStream; Windows resources

Back to top


One Last Compile...
Authors Type: Article
Issue 36 : August 1998 View article No source code
Summary Delphi 4, here I come..
Keywords One last compile

Back to top


Beating The System: A Windows 98 File Association Un-Mangler
Authors Dave Jewell Type: Article
Issue 36 : August 1998 View article View source code
Summary Dave Jewell begins work on a Windows file association un-mangler, teaching us a lot about the ins and outs of the registry along the way. Plus, he outlines what there is (or isn't) for programmers to get excited about in Windows 98...
Keywords Beating the System; Chached INI files; HKEY_CLASSES_ROOT; Registry; Registry hives; THeaderControl; TMemIniFile; TRegIniFile; TRegistry; Windows 98; Windows 98 for programmers; Windows NT and INI files; Windows file associations

Back to top


Optimising Form Handling
Authors Philip Brown Type: Article
Issue 36 : August 1998 View article View source code
Summary Phil Brown has a neat idea to minimise memory use for projects with lots of forms: a forms cache, which can take account of varying memory availability on users' machines to ensure your apps run sweetly
Keywords Application.CreateForm; AutoCreate forms; Creating forms on demand; Form cache; Form caching; Form handling; Minimising memory use

Back to top


David And Goliath
Authors Type: Article
Issue 36 : August 1998 View article No source code
Summary A faded and dusty manuscript reveals a strange and disturbing tale...
Keywords David and Goliath

Back to top


Incrementing A Date
Authors Brian Long Type: Clinic
Issue 36 : August 1998 View article View source code
Summary Incrementing A Date
Keywords Date arithmetic; Incrementing dates

Back to top


Access 97 Support
Authors Brian Long Type: Clinic
Issue 36 : August 1998 View article View source code
Summary Access 97 Support
Keywords Access 97 support; BDE versions; DAO support in BDE

Back to top


Access Security
Authors Brian Long Type: Clinic
Issue 36 : August 1998 View article View source code
Summary Access Security
Keywords Access SYSTEM DATABASE; Access security and BDE

Back to top


Memory Management Woes
Authors Brian Long Type: Clinic
Issue 36 : August 1998 View article View source code
Summary Memory Management Woes
Keywords Free; Freeing objects; Is an object disposed; Memory management; Set object pointer to nil

Back to top


Forcing Windows Shutdown
Authors Brian Long Type: Clinic
Issue 36 : August 1998 View article View source code
Summary Forcing Windows Shutdown
Keywords Closing Windows; ERROR_NO_SUCH_PRIVILEGE; EWX_FORCE flag; ExitWindowsEx; Forcing Windows shutdown; SE_SHUTDOWN_NAME; SysErrorMessage; Win32Check

Back to top


Delphi Colour Changes
Authors Brian Long Type: Clinic
Issue 36 : August 1998 View article View source code
Summary Delphi Colour Changes
Keywords Delphi IDE colors; Delphi IDE colours; Delphi registry area

Back to top


List Of Numbers
Authors Brian Long Type: Clinic
Issue 36 : August 1998 View article View source code
Summary List Of Numbers
Keywords Storing a list of numbers; TList; TStringList.Objects

Back to top


Delphi 4 Bugs And Fixes
Authors Hallvard Vassbotn , Dave Jewell Type: Article
Issue 37 : September 1998 View article View source code
Summary Hallvard Vassbotn and Dave Jewell provide news of some glitches in the first release of Delphi 4
Keywords Delphi 4 bugs and fixes; Delphi bug list; Cached updates bug; TListBox bug; Listbox bugs Delphi 4; Delphi 4 update; ListBox.ItemIndex; LB_GETCURSEL

Back to top


Integrating With Outlook And Exchange
Authors Berend de Boer Type: Article
Issue 37 : September 1998 View article View source code
Summary Berend de Boer shows how to create applications which integrate with Microsoft's Outlook and Exchange
Keywords Microsoft Outlook; Microsoft Exchange; Email; MAPI; COM; IExchExt; EECONTEXT_VIEWER; IExchExtCommands; IExchExtCallback

Back to top


Algorithms Alfresco: That's The Way It Goes
Authors Julian Bucknall Type: Article
Issue 37 : September 1998 View article View source code
Summary Julian Bucknall explains sorting algorithms: the good, the bad and the ugly. Get your deck of playing cards out, it's time for some lab work! Which is it to be, bubble, shaker, selection, insertion, Shell or quicksort?
Keywords Algorithms Alfresco; Sorting algorithms; Bubble sort; Shaker sort; Insertion sort; Improved insertion sort; Sorting performance; Quadratic time algorithms; Shellsort; Quicksort; Recursion; Choosing a sorting algorithm

Back to top


Beating the System: Windows 98 File Associations, Part 2
Authors Dave Jewell Type: Article
Issue 37 : September 1998 View article View source code
Summary Dave Jewell concludes the construction of his Windows file association un-mangler, so now you can happily undo the damage wreaked by a certain well-known software manufacturer...
Keywords Beating the System; File associations; Registry; Windows 98

Back to top


Dynamic Arrays
Authors Brian Long Type: Article
Issue 37 : September 1998 View article View source code
Summary Arrays are incredibly useful and crop up in just about every project we create. But "out of the box" they are rather inflexible as you need to decide upfront how big your array should be. Not any more, Brian Long explains how to make your arrays dynamic: resizeable and powerful, for Delphi 1 right through to Delphi 4, with its new built-in dynamic arrays feature.
Keywords Dynamic arrays; Heap-based arrays; Generic types; Range checking; Pointer dereferencing; GetMem and AllocMem; ReAllocMem; Allocating memory on heap; TList as a dynamic array; Paradox style dynamic arrays; TStringList as dynamic array; Non-integer array indexes; Array idex must be ordinal; Variant array; Delphi 4 dynamic arrays

Back to top


ICon 98: Conference Report
Authors David Baer Type: Article
Issue 37 : September 1998 View article No source code
Summary David Baer is fresh back from the annual Inprise conference, held this year in Denver. He brings us his own personal report with all the highlights and lowlights (what was that, they ran out of beer...?!)
Keywords ICon 98 conference report; Inprise 1998 conference

Back to top


Surviving Client/Server: ODBMS In Practice, Part 2
Authors Steve Troxell Type: Article
Issue 37 : September 1998 View article No source code
Summary Steve Troxell continues his examination of object oriented database systems, with some practical Delphi examples using Jasmine from Computer Associates
Keywords Surviving Client/Server; Client/Server; Object oriented databases; ODBMS; Computer Associates Jasmine; ODBMS in practice; ODBMS example

Back to top


Under Construction: Delphi 4 Web Broker Technology
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 37 : September 1998 View article View source code
Summary Bob Swart has been checking out what's new in internet application support in Delphi 4, now available as an add-on for Professional Edition users too
Keywords Under Construction; Delphi 4 web broker; Web applications; Internet applications; TDataSetPageProducer; Web Application Wizard; TPageProducer; Web module application; ISAPI; Internal Server Error 500; IntraBob CGI debugger/tester; Debugging ISAPI and NSAPI; Multi-threading in ISAPI; IsMultiThread

Back to top


COM Corner: ActiveX Data Binding In Delphi
Authors Steve Teixeira Type: Article
Issue 37 : September 1998 View article View source code
Summary Steve Teixeira shows how easy it is to create 'bound' ActiveX controls in Delphi 4 using the wonders of COM programming, able to work with data from whatever source you like...
Keywords COM programming; ActiveX data binding; Bound ActiveX controls; Data-aware ActiveX; Creating ActiveXs; Writing ActiveXs; ICursor; ICursorMove; VARFLAG_FBINDABLE; VARFLAG_FREQUESTEDIT; VARFLAG_FDISPLAYBIND; IPropertyNotifysinks; Bindable properties; TActiveXControl

Back to top


Delphi Component Templates
Authors Brian Long Type: Clinic
Issue 37 : September 1998 View article View source code
Summary Delphi Component Templates
Keywords Delphi component templates; Copying component templates

Back to top


Current Printer?
Authors Brian Long Type: Clinic
Issue 37 : September 1998 View article View source code
Summary Current Printer?
Keywords Getting current printer; Printers unit; AssignPrn; PrinterIndex

Back to top


Export To Excel
Authors Brian Long Type: Clinic
Issue 37 : September 1998 View article View source code
Summary Export To Excel
Keywords Exporting to Excel; TBatchMove

Back to top


Flashing Text
Authors Brian Long Type: Clinic
Issue 37 : September 1998 View article View source code
Summary Flashing Text
Keywords Flashing text

Back to top


Microsoft Internet Mail Style Application
Authors Brian Long Type: Clinic
Issue 37 : September 1998 View article View source code
Summary Microsoft Internet Mail Style Application
Keywords Internet mail style app; Login forms; Form with no taskbar entry; TApplication; MDI; Ws_Ex_ToolWindow; Remove taskbar entry; ShowWindow; Forms with different icons; CreateParams

Back to top


BDE Error Dialog
Authors Brian Long Type: Clinic
Issue 37 : September 1998 View article View source code
Summary BDE Error Dialog
Keywords BDE error dialog; BDE error messages; Borland Database Engine; DBExcept unit; TDbEngineErrorDlg; EDBEngineError; Exception handling; HookExceptions; Application.OnException

Back to top


Capturing DOS Output
Authors Brian Long Type: Clinic
Issue 37 : September 1998 View article View source code
Summary Capturing DOS Output
Keywords Capturing DOS output; Capturing redirected output; DOS redirection; CreateProcess; Command.com

Back to top


One Last Compile
Authors Type: Article
Issue 37 : September 1998 View article No source code
Summary Rolling back the frontiers
Keywords One last compile

Back to top


Algorithms Alfresco: Like A Tattoo, Introducing Graphs
Authors Julian Bucknall Type: Article
Issue 38 : October 1998 View article View source code
Summary No, not those pretty things you do on squared paper, but computer science graphs (used, for example, in calculating the smallest distance to drive between appointments in several places). Clever stuff from Julian Bucknall...
Keywords Algorithms Alfresco; Graph algorithms; Scheduling algorithms; Computer science graphs; Network of nodes; Directed graphs: digraphs; Labeled graphs; Weighted graphs; Gantt chart; Travelling salesman; Matrix, matrices; Triangular matrix; Linked lists; Head and tail nodes; Spanning tree

Back to top


Building A Parsing Component
Authors Paul Warren Type: Article
Issue 38 : October 1998 View article View source code
Summary Paul Warren found he got more projects that involved parsing some kind of file to extract information from it. So he sat down and wrote a suite of parsing components to make life easier. His article describes the implementation of parsers for text, comma-separated data, HTML and Delphi Object Pascal code.
Keywords Parsing components; Text parsing; HTML parsing; Parsing Pascal code; Parsing Delphi code; TParser; Component wrapper; Converting Pascal to HTML; Source code cross-reference; Parsing comma-delimited data

Back to top


Under Construction: MIDAS, CORBA And TClientDataSet
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 38 : October 1998 View article No source code
Summary Multi-tier architecture is all the rage and Bob Swart provides a timely and practical introduction to Delphi 4's support to help you get started.
Keywords Under Construction; MIDAS; CORBA; TClientDataSet; Multi-Tier computing; COM and DCOM; Distributed applications; Remote Data Module; MIDAS sever and client

Back to top


Beating the System: A Delphi Version Reporting Component
Authors Dave Jewell Type: Article
Issue 38 : October 1998 View article View source code
Summary Dave Jewell unravels Microsoft's VERSION resource to create a neat way of using the information contained in your applications at runtime
Keywords Beating the System; VERSION resource; Getting version information; Version component; VERSION.DLL; GetFileVersionInfoSize; VER.DLL; Versioning API; VS_VERSION_INFO; VS_FIXEDFILEINFO; ToolServices; EXPTINTF unit; ToolServices in components

Back to top


Creating A Delphi Build Process
Authors Dave Collie Type: Article
Issue 38 : October 1998 View article View source code
Summary Dave Collie discusses the creation of an automated build process for your Delphi projects, including EXEs, DLLs, resource and help files and so on. Ideal for those working as part of a development team, or where a product includes more than one application.
Keywords Building projects; Delphi build process; Command line compiler; Compiler configuration files; DCC32.EXE

Back to top


Com Corner: Distributed Computing
Authors Steve Teixeira Type: Article
Issue 38 : October 1998 View article No source code
Summary Steve Teixeira continues our series on COM progamming with a lucid explanation of the pros and cons of DCOM and CORBA, helping you to choose the right option for your project. Are you drowning in the alphabet soup of acronyms? Don't miss Steve's explanation.
Keywords COM Corner; COM programming; Choosing CORBA or DCOM; Distributd computing; Middleware; Object request broker ORB

Back to top


Surviving Client/Server: Interactive Query Building
Authors Steve Troxell Type: Article
Issue 38 : October 1998 View article View source code
Summary Steve Troxell discusses how to implement interactive query building to give your users the power to create their own queries without learning SQL.
Keywords Surviving Client/Server; Client/server; Interactive query building; SQL; Generating SQL; End user queries

Back to top


Creating TTables And TFields At Runtime
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 38 : October 1998 View article View source code
Summary Bob Swart describes how to create tables and fields on the fly at runtime to make life easier when distributing your database applications.
Keywords Creating tables and fields; TField; TTable; Generating tables at runtime; Generating fields at runtime; Get field info for tables

Back to top


One Last Compile...
Authors Type: Article
Issue 38 : October 1998 View article No source code
Summary The rock pools of Delphi
Keywords One last compile...

Back to top


Undocumented Delphi 4
Authors Brian Long Type: Clinic
Issue 38 : October 1998 View article View source code
Summary Undocumented Delphi 4
Keywords Undocumented Delphi 4; Delphi 4 command line; Delphi 4 registry settings; Delphi 4 easter eggs

Back to top


Stopping Windows Shutdown
Authors Brian Long Type: Clinic
Issue 38 : October 1998 View article View source code
Summary Stopping Windows Shutdown
Keywords Stopping Windows shutdown; Preventing Windows shutdown; OnCloseQuery; CanClose; wm_QueryEndSession

Back to top


Program Running Upon Windows Start-Up
Authors Brian Long Type: Clinic
Issue 38 : October 1998 View article View source code
Summary Program Running Upon Windows Start-Up
Keywords Program runs on startup; Restart program on startup; Registry RunOnce setting; wm_EndSession

Back to top


IDE Keyboard Problem
Authors Brian Long Type: Clinic
Issue 38 : October 1998 View article View source code
Summary IDE Keyboard Problem
Keywords IDE keyboard problem; Trapping keystrokes

Back to top


Keystroke Interception
Authors Brian Long Type: Clinic
Issue 38 : October 1998 View article View source code
Summary Keystroke Interception
Keywords Keystroke interception; Trapping keystrokes; Intercepting keystrokes; Keyboard; OnKeyDown; Keystroke handling; wm_KeyDown; wm_Char; TranslateMessage; wm_KeyUp; Virtual key codes; vk_ key codes; WinTypes unit; Windows unit; wm_SysKeyDown; wm_SysKeyUp; wm_SysChar; Shift, Alt, Ctrl keys; wm_MenuChar

Back to top


Dynamic Fonts Update
Authors Brian Long Type: Clinic
Issue 38 : October 1998 View article View source code
Summary Dynamic Fonts Update
Keywords Dynamic fonts update; Loading fonts at runtime; Font names; wm_FontChange

Back to top


Erratic MDI Menu Update
Authors Brian Long Type: Clinic
Issue 38 : October 1998 View article View source code
Summary Erratic MDI Menu Update
Keywords Erratic MDI menu update; LockWindowUpdate; wm_SetRedraw

Back to top


Base64 MIME Encoding
Authors Damon Matthews Type: Article
Issue 39 : November 1998 View article View source code
Summary Damon Matthews describes how to implement Base64 MIME encoding and decoding of binary data: very useful if you have an application which you need to send email with binary attachments from
Keywords MIME encoding; Base64 MIME; Email; Binary files; Convert binary to ASCII; EBCDIC; Internet; RFC 1521; Binary attachments; UUEncoding; XXEncoding; Quoted printable encoding

Back to top


Slimming The Fat Off Your Apps
Authors Hallvard Vassbotn Type: Article
Issue 39 : November 1998 View article View source code
Summary Hallvard Vassbotn wants to slim the fat off your software: tune in here if you want [your programs] to be leaner and fitter...
Keywords Unit initialization section; Delphi code generation; Delphi on Windows NT; Delphi IDE memory use; Unit finalization section; CPU window; Exit procedures; Delphi generates extra code; Reducing memory usage; Long strings; system._initexe; system.initunits; Memory leaks in Delphi 2; Reference counted variables; Reference counting; Reduce memory use

Back to top


New Delphi 4 User Interface Features
Authors Warren Kovach Type: Article
Issue 39 : November 1998 View article View source code
Summary Warren Kovach checks out some of the new user interface features which were introduced with Delphi 4, including bitmaps on menus, floating dockable toolbars and more.
Keywords Delphi 4 user interface; New user interface features; Office 97 look and feel; Menus with bitmaps; TAction and TActionList; TMenuItem; Action property; 3D menus; Toolbars as menus; TToolBar; TToolButton; COMCTL32.DLL ver 4.72; Constraints property; WM_GETMINMAXINFO; Maximum form size; Minimum form size; TControlBar; Floating, dockable toolbars; Docking; Dockable tool windows; dkDock DragKind; DockSite; TMonthCalendar; TPageScroller

Back to top


One Last Compile...
Authors Type: Article
Issue 39 : November 1998 View article No source code
Summary Delphi Goes To Hollywood
Keywords One last compile...

Back to top


COM Corner: Automation Events
Authors Steve Teixeira Type: Article
Issue 39 : November 1998 View article View source code
Summary Steve Teixeira explains the mysteries of events in COM programming: if you've avoided them until now or bravely wrestled with implementation, help is at hand...
Keywords COM Corner; COM programming; Automation events; OLE Automation; Delphi 4; Events interface; Outgoing interface; Multicasting; IID; Interface identification; IConnectionPointContainer; Connection point; FindConnectionPoint; IConnectionPoint; GetConnectionInterface; Type library editor; Event sink; Server source; InterfaceConnect; InterfaceDisconnect

Back to top


Algorithms Alfresco: Priority Queues And Heapsort
Authors Julian Bucknall Type: Article
Issue 39 : November 1998 View article No source code
Summary To progress his discussion of graph algorithms Julian Bucknall takes a slight detour to discuss priority queues and how to work with them, handily showing how to implement the heapsort algorithm along the way too.
Keywords Algorithms Alfresco; Priority queue; Heapsort; Graph algorithms; FIFO and LIFO; Queues; Tree balancing algorithms; Binary tree; Heap data structure; Binary tree as array; Sorting; Floyd's algorithm

Back to top


Under Construction: Website Visitor Tracking
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 39 : November 1998 View article View source code
Summary Bob Swart builds on his introduction to distributed computing by creating a distributed application to monitor and track website visitors in full detail and glorious technicolor
Keywords Under Construction; Website visitor tracking; Internet; Web applications; TClientDataSet; Multi-tier applications; ActiveForm; Website visitor log; HTTP_USER_AGENT; Obtaining user's IP address; BDE and CGI applications; BDE load/unload time; JavaScript; MIDAS; DCOM; OLEnterprise; ActiveX; TDCOMConnection

Back to top


Beating the System: Surfing Explorer's Namespace
Authors Dave Jewell Type: Article
Issue 39 : November 1998 View article View source code
Summary Strange that Delphi doesn't provide a nice neat tree-view dialog to allow your users to select a directory, isn't it? Dave Jewell thought so too and set to with a will to wrap up the SHBrowseForFolder API routine for us and provide some useful enhancements too
Keywords Beating the System; Windows Explorer namespace; Browsing for folders; Browsing for directory; Select directory or folder; Treeview of directories; SHBrowseForFolder; COMDLG32.DLL; SHELL32.DLL; SelectDirectory; TBrowseInfo; SHGetSpecialFolderLocation; bif_BrowseIncludeFiles; SHGetPathFromIDList; Callbacks

Back to top


Preventative Programming: Code Smarter, Debug Less
Authors Chad Z Hower Type: Article
Issue 39 : November 1998 View article View source code
Summary Chad Z Hower wants us all to get home earlier and spend less time staring moodily at the debugger, so he's come up with a raft of hints, helps and tips to ensure our programs work right from the first compile
Keywords Programming style; Setting up the Delphi IDE; Show component captions; Optimization; Stack frames; Range and overflow checking; Debugging options; Assert; Assertions; Typecasting guidelines; Exception handling; Date formats; FieldByName; Uses statement; Variants

Back to top


Paradox Lock Information
Authors Brian Long Type: Clinic
Issue 39 : November 1998 View article View source code
Summary Paradox Lock Information
Keywords Paradox lock information; Listing locks in use; dbiOpenLockList; BDE locks

Back to top


Formatted Numbers
Authors Brian Long Type: Clinic
Issue 39 : November 1998 View article View source code
Summary Formatted Numbers
Keywords Formatted numbers; Thousand separators; FloatToStrF; FormatFloat; StrToFloat

Back to top


RichEdit Tabstops
Authors Brian Long Type: Clinic
Issue 39 : November 1998 View article View source code
Summary RichEdit Tabstops
Keywords RichEdit tab stops; Tabstops

Back to top


Environment Variables
Authors Brian Long Type: Clinic
Issue 39 : November 1998 View article View source code
Summary Environment Variables
Keywords Environment variables; DOS environment; GetDOSEnvironment; GetEnvironmentStrings; Environment variables

Back to top


Net File Directory
Authors Brian Long Type: Clinic
Issue 39 : November 1998 View article View source code
Summary Net File Directory
Keywords Paradox net file directory; Change net file directory; Session.NetFileDir; TSession; sesNETFILE

Back to top


SQL Dates
Authors Brian Long Type: Clinic
Issue 39 : November 1998 View article View source code
Summary SQL Dates
Keywords SQL dates; Formatting dates in SQL

Back to top


Folders And Shortcuts
Authors Brian Long Type: Clinic
Issue 39 : November 1998 View article View source code
Summary Folders And Shortcuts
Keywords Creating Windows shortcuts; Creating program folders; Start menu; Desktop shortcuts; DDE; Program manager; Dynamic data exchange; Explorer shell; Program groups; Link files; IShellLink; IPersistFile; SHGetSpecialFolderLocation; Program folder location; Windows directory location; SHLOBJ unit; SHGetPathFromIDList; IMalloc; SHGetMalloc; Start menu folder; ShellExecute

Back to top


Tooltip Characters
Authors Brian Long Type: Clinic
Issue 39 : November 1998 View article View source code
Summary Tooltip Characters
Keywords Tooltips; Multiple line hints; Multi-line hints; Carriage return in hint; Carriage return in tooltip

Back to top


Diagramming In Delphi
Authors Jim Cooper Type: Article
Issue 40 : December 1998 View article View source code
Summary Jim Cooper describes how to implement some easy to use diagramming classes in Delphi, with a website mapper showing the links between the files making up the site as a real-world example
Keywords Diagramming; Diagrams; Line drawing; TGraphicControl; TCanvas; Drawing shapes; DrawText; TImageList; Image lists; Arrowhead; Mapping websites; Web applications; Parsing HTML; Parsing algorithms; Website diagram

Back to top


Beating The System: Exploiting The System Image List
Authors Dave Jewell Type: Article
Issue 40 : December 1998 View article View source code
Summary by Windows, to give high-performance access to system-standard icons for drives, folders and so on. Plus, he uses these tricks to replace the clumsy Win3.x style drive list combobox Dave Jewell shows how to use the wealth of icons handily cached for us
Keywords Beating the System; System image list; Using Windows icons; Cached icons; ImageIndex; TBrowseInfo.iImage; Windows shell; ExtractIcon; CommCtrl unit; ShellAPI unit; SHGetFileInfo; shgfiSmallIcon; shgfiLargeIcon; GetSystemMetrics; ImageList_GetIconSize; ImageList_Draw; TDriveComboBox; Disk drive icons; Windows 95 style drive icons; ImageList_Duplicate; ImageList is read only; GetLogicalDriveSettings; Logical drive letters; List of disk drives; File system information; FAT32; Drive Volume ID; WNetGetConnection

Back to top


COM Corner: Namespace Extensions
Authors Steve Teixeira Type: Article
Issue 40 : December 1998 View article View source code
Summary Steve Teixeira has been battling with the complexities of namespace extensions. Tune in and see what's been keeping him awake at night: by following his guidelines you could well save yourself some sleep!
Keywords COM Corner; COM programming; Shell namespace extensions; Extending Explorer namespace; Namespace junction point; IShellFolder; CreateViewObject; IShellView; Browsing COM servers; Finding COM servers; COM servers in Registry; PIDLs (piddles); CreateViewWindow; Self-registering COM server; Closing Shell not Windows; Debugging Shell extensions

Back to top


Under Construction: Surfin' Your Surfers With TDecisionCube
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 40 : December 1998 View article View source code
Summary Bob Swart uses the decision cube technology included in Delphi Client/Server Suite to explore his website visitor data, gathered with last month's multi-tier website visitor tracking system
Keywords Under Construction; TDecisionCube; Decision cubes; Delphi client/server edition; Website visitor tracking; TDecisionPivot; TDecisionQuery; TDecisionSource; TDecisionGrid; Decision Query Editor; SQL; DecisionGrid column width; DecisionGrid.ColWidths; TDecisionChart

Back to top


Algorithms Alfresco: Silent Night
Authors Julian Bucknall Type: Article
Issue 40 : December 1998 View article View source code
Summary Julian Bucknall describes a rather curious visit he had recently and comes up with a stocking full of useful algorithms full of seasonal cheer...
Keywords Algorithms Alfresco; Checksum algorithms; Verifying credit card number; Verifying ISBN number; Validation; Self-validating numbers; Date from day of week; EncodeDate; DayOfWeek; ISO date; ISO week of the year; Winsock; TCP/IP; Circular queue; Linear queue; Queue with overflow; Shuffling deck of cards; Shuffling an array; Fractions from decimal; Calculating fractions; Floating point inaccuracy; Continued fractions; Integer to roman numerals; Roman numbers; Convert Roman numbers

Back to top


Manufacturing Fake Keystrokes
Authors Brian Long Type: Article
Issue 40 : December 1998 View article View source code
Summary Brian Long describes how to manufacture keystrokes in your applications, for example to initiate a sequence of actions programmatically
Keywords Making fake keystrokes; Simulating keystrokes; Extended keystrokes; Programmatic keystrokes; wm_KeyDown; wm_KeyUp; wm_Char; Internal key state; PostVirtualKeyEvent; PenWindows DLL; KeyBd_Event; MapVirtualKey; Programmatic print screen; Screen capture; vk_SnapShot; Virtual key codes; GetMessageExtraInfo; SendInput; Numeric keypad; WinSight; Delphi 4 SendInput bugs; TAppBuilder; Input_Keyboard; Input_Hardware; TMouseInput; TKeyBdInput; THardwareInput; TInput; dwExtraInfo; dwExtractInfo is incorrect

Back to top


Knitting Your Own Threads
Authors Hallvard Vassbotn Type: Article
Issue 40 : December 1998 View article View source code
Summary Hallvard Vassbotn has been investigating Delphi's support for multithreading and has found it helpful but lacking. So, this month he presents us with a better model for multithreaded applications
Keywords Multithreading; Threads; Threading; Threadvar; TLS thread local storage; TlsAlloc; _GetTls; TlsIndex; TlsLast; InOutRes; RaiseList; TThread; IsMultiThread; Detecting multiple threads; BeginThread; Multithreading in the VCL; CreateThread; DelphiMM DLL; BorlandMM DLL; Threads in COM; EndThread; CreateThread; ExitThread; MainThreadID; PostThreadMessage; Thread objects; Synchronize; TThread.WaitFor; Waiting for thread to finish; TThread restrictions; TRTLCriticalSection; SyncObjs unit; TThreadList; CriticalSections; WaitForMultipleObjects; Delphi threading problems; Mutex and semaphore support; Waiting for multiple objects; THandleObject; Thread communication; Avoiding synchronize; WaitMessage; MsgWaitForMultipleObjects; Hooking OnIdle event; Action lists and threads

Back to top


One Last Compile...
Authors Type: Article
Issue 40 : December 1998 View article No source code
Summary Woke up this mornin' and had those old client/server blues
Keywords One last compile...

Back to top


Surviving SQL
Authors Steve Troxell Type: Article
Issue 40 : December 1998 View article No source code
Summary Steve Troxell has some handy tips to make life easier when customising your client/server systems for different clients
Keywords Surviving SQL; SQL; Customising software

Back to top


Enhanced Grids
Authors Brian Long Type: Clinic
Issue 40 : December 1998 View article View source code
Summary Enhanced Grids
Keywords Enhanced grids; TDBGrid; TStringGrid; Vertical Scrollbars; Custom scrollbar behaviour; Customising scrollbars; TScrollBar; wm_VScroll; wm_HScroll; Scrollbar messages; sb_LineUp; sb_LineDown; sb_PageUp; sb_PageDown; sb_ThumbTrack; sb_EndScroll; sb_ThumbPosition; TScrollCode; Scrollbar events; OnScroll; Vertical scrollbar position; Scrollbar on TDBGrid

Back to top


Restarting Windows
Authors Brian Long Type: Clinic
Issue 40 : December 1998 View article View source code
Summary Restarting Windows
Keywords Restarting Windows; ExitWindowsEx; Rebooting computer; Shutting down Windows; Preventing reboot; Undocumented Windows 95; RestartDlg; Windows 95 restart dialog; FindWindow; RestartDialog

Back to top


TStringGrid Coordinates
Authors Brian Long Type: Clinic
Issue 40 : December 1998 View article View source code
Summary TStringGrid Coordinates
Keywords TStringGrid Coordinates; Selected cell TStringGrid; MouseToCell

Back to top


Code Insight Customisation
Authors Brian Long Type: Clinic
Issue 40 : December 1998 View article View source code
Summary Code Insight Customisation
Keywords Code Insight Customisation

Back to top


Windows API Help Files
Authors Brian Long Type: Clinic
Issue 40 : December 1998 View article View source code
Summary Windows API Help Files
Keywords Windows API Help Files; Win32 help files; Windows API help; Windows SDK

Back to top


Design Patterns
Authors Hallvard Vassbotn Type: Article
Issue 41 : January 1999 View article View source code
Summary Hallvard Vassbotn has been checking out the 'gang of four' and considering their suggestions for a new approach to software design. In this article he discusses the best approach to implementing design patterns in Delphi, with the Singleton pattern presented as a working example
Keywords Design patterns; Software design; Gang of four; Singleton design pattern; Gamma; Christopher Alexander; Object Pascal and C++; Software re-use (reuse); Class reference variables; Virtual constructors; Single instance of class; Singleton classes; Visibility of methods; Class procedures; Prevent object destruction; Prevent object creation; Assertions; Class fields

Back to top


Surviving Client/Server: Replicating Server Constraints
Authors Steve Troxell Type: Article
Issue 41 : January 1999 View article No source code
Summary Steve Troxell has observed a constant struggle in client/server development about where and how to enforce data constraints. Here he discusses Delphi's solution to the problem, the data dictionary included from Delphi 2 up, with tips on using it for real and its drawbacks too
Keywords Surviving client/server; Client/server; Replicating constraints; Server constraints; Client constraints; Data constraints; Data validation; Data integrity; Delphi data dictionary; SQL Explorer; CustomConstraint; DisplayFormat; MaxValue, MinValue; TField attribute sets; Database schema; BDE aliases; Check constraints; Data dictionary problems; BDE and Database aliases

Back to top


Algorithms Alfresco: Join The Dots
Authors Julian Bucknall Type: Article
Issue 41 : January 1999 View article View source code
Summary Julian Bucknall bravely dives head first into the concluding part of his discussion of graph algorithms. Topological sorts, solving the travelling salesmen problem, the algorithms of Prim and Dijkstra, it's all here so come join the party...
Keywords Algorithms alfresco; Graph algorithms; Topological sorting; Depth first traversal; Unconnected graphs; Directed acyclic graph: dag; Breadth first traversal; Shortest path algorithm; Priority first traversal; Prim's Algorithm; Spanning tree; Travelling salesmen problem; Traveling salesmen problem; NP-complete problems; Dijkstra's Algorithm; Lowest cost path

Back to top


Under Construction: Usenet News Reading
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 41 : January 1999 View article View source code
Summary Bob Swart investigates how to write your very own Usenet Newsgroup reader in Delphi, from the ground up, covering the murky world of the NNTP protocol, sockets and more.
Keywords Under Construction; Internet applications; NNTP protocolk; Newsgroup reader; Socket programming; Usenet newsgroups; Network news transport; TNMNNTP component; WinSock

Back to top


Diagramming With Delphi, 2: The Adventure Continues
Authors Jim Cooper Type: Article
Issue 41 : January 1999 View article View source code
Summary Jim Cooper enhances the diagramming classes from last month, making the diagram elements movable and sizeable, adding the capability to store diagrams, and using all this functionality in a use case editor (for all you OO design methodology experts out there!)
Keywords Diagramming; Line drawing; Diagrams; Diagram classes; Class methods; Saving objects to streams; RegisterClass; Sizing and moving components; Adding font property; Use case diagrams; Object oriented design; Use case editor; Unified Modelling Language; UML; Unified Process

Back to top


Beating the System: Animated Icons And Cursors, 1
Authors Dave Jewell Type: Article
Issue 41 : January 1999 View article View source code
Summary Dave Jewell has been delving into the workings of the animated cursor files introduced by Microsoft in Windows NT, but now available in Windows 95 and 98. He presents code to allow you to easily include animated icons and cursors in your Delphi applications, with the minimum of fuss and resource use.
Keywords Beating the System; Animated icons; Animated cursors; ANI files; RIFF file format; ICO files; Icon file format; TIconHeader; TIconDirEntry; Animation; Jiffy; dwJIFRate; Streaming animated icons; TGraphic streaming support; TImageList.SharedImages; Image List; System image list; MicroAngelo icon editor

Back to top


One Last Compile...
Authors Type: Article
Issue 41 : January 1999 View article No source code
Summary The source of all wisdom
Keywords One last compile...

Back to top


COM Corner: Automation Collections
Authors Steve Teixeira Type: Article
Issue 41 : January 1999 View article View source code
Summary Steve Teixeira observes that every language and programming method seems to have its approach to creating and using containers, and COM is no exception. This month he explains how to use COM collections to best effect
Keywords COM Corner; COM programming; Automation collections; Containers; IDispatch; Containers in COM; Arrays in COM; _NewEnum; IEnumVARIANT; DISPID_NEWENUM; OleVariant; RegisterNonActiveX; ActiveX controls

Back to top


Is This Property Published?
Authors Brian Long Type: Clinic
Issue 41 : January 1999 View article View source code
Summary Is This Property Published?
Keywords Is a property published?; RTTI; Runtime type information

Back to top


SQL Cursor Banished
Authors Brian Long Type: Clinic
Issue 41 : January 1999 View article View source code
Summary SQL Cursor Banished
Keywords Do not use SQL cursor; Disable SQL cursor; crSQLWait cursor; Session.SQLCursor

Back to top


Bracket Matching
Authors Brian Long Type: Clinic
Issue 41 : January 1999 View article View source code
Summary Bracket Matching
Keywords Bracket matching in Delphi; Delphi IDE

Back to top


Win32 System Modal Window
Authors Brian Long Type: Clinic
Issue 41 : January 1999 View article View source code
Summary Win32 System Modal Window
Keywords Win32 system modal window; Windows NT; Screen saver; SystemParametersInfo; spi_ScreenSaverRunning

Back to top


Bad Editor Line Numbers
Authors Brian Long Type: Clinic
Issue 41 : January 1999 View article View source code
Summary Bad Editor Line Numbers
Keywords Incorrect editor line number; Delphi IDE

Back to top


Backspace And New Line
Authors Brian Long Type: Clinic
Issue 41 : January 1999 View article View source code
Summary Backspace And New Line
Keywords Backspace and new line; Delphi IDE

Back to top


Edit-Less TDBGrid
Authors Brian Long Type: Clinic
Issue 41 : January 1999 View article View source code
Summary Edit-Less TDBGrid
Keywords Non-editable TDBGrid; Prevent editing of TDBGrid; Allow editing of TStringGrid; TDBGrid.Options; dgEditing; TStringGrid.Options; goEditing

Back to top


Control Panel Invocation
Authors Brian Long Type: Clinic
Issue 41 : January 1999 View article View source code
Summary Control Panel Invocation
Keywords Starting control panel; Control panel applets; CPL files; Shell32.dll; shell.dll; RunDll32.exe; RunDll.exe; Running a DLL; control.exe

Back to top


OpenGL: Under The Hood
Authors John Hutchings Type: Article
Issue 42 : February 1999 View article View source code
Summary John Hutchings shows how to create 3D graphics applications that will just blaze along, with a handy set of components to encapsulate the OpenGL API and shield us from all the gory details!
Keywords OpenGL; 3D graphics; GLINT chipset; Vector drawing; Direct3D versus OpenGL; OpenGL components; OPENGL32.DLL; GLU32.DLL; Silicon Graphics OpenGL DLLs; Microsoft OpenGL DLLs; OpenGL 1.2 Delphi interface; Rendering context; wglCreateContext; glViewport; Coordinate systems; Head-up-display; 3D primitives; Text in OpenGL; Bitmaps in OpenGL; Textures; Fonts; Saving OpenGL images to disk; Rendering to a buffer

Back to top


Implementing Active Server Pages
Authors Eyal Hirsch Type: Article
Issue 42 : February 1999 View article View source code
Summary Microsoft's ASP technology is becoming more and more widely used, but Delphi does not currently include ASP DLLs in the list of web application types it can generate. Eyal Hirsch demonstrates how we can plug the gap for ourselves
Keywords Active Server Pages; ASP in Delphi; Creating ASP DLLs; Web applications; World wide web, internet; Building ASP objects; Personal Web Server; Assigning TCP/IP addresses; ASP type library; IScriptingContext; IResponse; Databases and ASP; TDataSetTableProducer; Generating HTML

Back to top


One Last Compile...
Authors Type: Article
Issue 42 : February 1999 View article No source code
Summary Portrait of the Artist as a Young Coder
Keywords One Last Compile...

Back to top


Update: Diagramming In Delphi, Part 2
Authors Jim Cooper Type: Article
Issue 42 : February 1999 View article View source code
Summary Jim Cooper fixes a glitch in the second instalment of his diagramming article, from the January 1999 issue
Keywords Diagramming in Delphi; Issue 41 update; Drawing

Back to top


Beating the System: Animated Icons And Cursors, 2
Authors Dave Jewell Type: Article
Issue 42 : February 1999 View article View source code
Summary In this second part of his investigation of ANI files, Dave Jewell presents components to display an animation on a form and to use an animated icon in the Windows tray icon area
Keywords Beating the System; Animated icons and cursors; Property editors; DSGNINTF unit; Component building; Registering property editors; Animated Windows tray icons; Windows taskbar; Shell_NotifyIcon; Window handle with no window; AllocateHWnd; Hidden windows; DeallocateHWnd; Animated cursors; LoadImage

Back to top


Paradox File Corruption
Authors Brian Long Type: Article
Issue 42 : February 1999 View article View source code
Summary It seems that corruption of Paradox table and index files is still rife, but Brian Long has been searching high and low for the information you need to avoid such problems. He's also created a handy utility which will investigate the various relevant system settings on a machine and alert you to any issues
Keywords Paradox file corruption; Paradox index corruption; Paradox table corruption; BDE; Database file corruption; Session.PrivateDir; Lock file has grown too big; Paradox temporary files; Local Share; Packing Paradox tables; Disk caching problems; dBase file corruption; VREDIR.VXD; VNETSUP.VXD; Data sharing with NT Server; Windows 95 and NT Server; Write-behind caching; Synchronous buffer commits; File locking semantics; AsyncFileCommit; SoftCompatMode; Novell netware networks; Opportunistic locking; ForceLazyOff; SmartDrive; RestartDialog; CheckRegistryEntry; TUtility

Back to top


Algorithms Alfresco: Back On The Chain Gang
Authors Julian Bucknall Type: Article
Issue 42 : February 1999 View article View source code
Summary Julian Bucknall opens the can on linked lists. So you think you know all about these ubiquitous data structures? Well think again, as Julian has some neat tricks up his sleeve to make life easier and your applications faster!
Keywords Algorithms Alfresco; Linked lists; Container data structure; TList; Singly linked list; Doubly linked list; Array versus linked list; Nodes; EZDSL class library; Typeless pointer; Allocating memory; Delphi heap manager; Memory management; Free list structure; Cursor in linked list; Sorting a linked list; Sorting singly linked list; Sorted list; Insertion sort; Binary search; Searching linked list; Stack and queue; LIFO and FIFO; Enqueue and dequeue; Circular linked list; Multilist linked list; Hash tables

Back to top


Under Construction: Usenet News Reading, 2
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 42 : February 1999 View article View source code
Summary Bob Swart continues his work with the Network News Transfer Protocol (NNTP), showing how to write code that posts messages to Usenet newsgroups
Keywords Under Construction; Usenet newsgroups; NNTP; Posting messages; News server; Socket programming; Winsock; Response status codes

Back to top


COM Corner: ActiveX Documents, Part 1
Authors Steve Teixeira Type: Article
Issue 42 : February 1999 View article View source code
Summary Another first for The Delphi Magazine! Steve Teixeira has unravelled the techniques you need to create ActiveX document servers in Delphi
Keywords COM Corner; ActiveX document servers; OLE; Automation; OLE 2.0 Document Objects; ActiveX document interfaces; Delphi ActiveX framework DAX; Automation server; IPersistStorage; IPersistFile; IOleObject; IDataObject; IOleInPlaceObject; IOleInPlaceActiveObject; IOleDocument; IOleDocumentView; IOleCommandTarget; IPrint; Frames documents views; IOleInPlaceFrame; IOleInPlaceSite; IOleContainer; TActiveXControl; FOleInPlaceSite; ObjQueryInterface; IOleLink

Back to top


SQL Query
Authors Brian Long Type: Clinic
Issue 42 : February 1999 View article View source code
Summary SQL Query
Keywords SQL; SQL queries on two tables; Help with writing SQL; QBE; Translating QBE to SQL; Database desktop; Visual query builder; Generating SQL queries; SQL SELECT, COUNT, WHERE; TQuery; SQL Builder; SQL DISTINCT; BDE local SQL; SQL JOIN

Back to top


Delphi 4 Docking
Authors Brian Long Type: Clinic
Issue 42 : February 1999 View article View source code
Summary Delphi 4 Docking
Keywords Delphi 4 docking; Turn docking off; GetDockSiteAtPos; Dockable windows in IDE; GetKeyState

Back to top


Delphi Hangs PC
Authors Brian Long Type: Clinic
Issue 42 : February 1999 View article View source code
Summary Delphi Hangs PC
Keywords Delphi hangs the computer; Inastalling components; Delphi 3; Image list bugs; COMCTL32.DLL versions; Video card drivers; Graphics cards; TImageList; Delphi IDE; Woll2Woll; Diamond Stealth; Matrox; S3 graphics chip; Diamond Viper; Neo Magic; Windows 98

Back to top


Delphi 4 Components
Authors Brian Long Type: Clinic
Issue 42 : February 1999 View article View source code
Summary Delphi 4 Components
Keywords Delphi 4 component errors; Delphi 4 bugs; Method overloading; Function overloading; Registering components; Missing components; Components not installed; Name mangling; Register procedure

Back to top


Delphi 4 Editor Enhancements
Authors Brian Long Type: Clinic
Issue 42 : February 1999 View article View source code
Summary Delphi 4 Editor Enhancements
Keywords Delphi 4 editor enhancements; Delphi IDE; Code explorer; Class completion; Module navigation; Code browser; Tooltip symbol insight

Back to top


Delphi 4 Code Insight Customisation
Authors Brian Long Type: Clinic
Issue 42 : February 1999 View article View source code
Summary Delphi 4 Code Insight Customisation
Keywords Delphi 4 Code Insight; Customising code insight; Code completion; Delphi 4 IDE; Name sorting

Back to top


Algorithms Alfresco: Follow Me, Follow You
Authors Julian Bucknall Type: Article
Issue 43 : March 1999 View article View source code
Summary Since it will soon be time for all those Spring lambs to begin cavorting all over the place, Julian Bucknall is developing skip lists this month... Good structures for storing sorted data, says the maestro!
Keywords Algorithms Alfresco; Skip lists; Linked lists; Doubly linked list; William Pugh; Balanced trees; Sorted data structures; Probabilistic; Unbalanced binary tree; Balancing algorithms; Duplicate items in skip list; Deterministic skip lists; Munro, Papdakis, Sedgewick; 1-2 Skip list; Shuffle algorithm; Issue 40 update; Errata Issue 40; Memory management; Heap manager

Back to top


Updating MakeMethodInstance
Authors Peter Sokolov Type: Article
Issue 43 : March 1999 View article No source code
Summary In Issue 18 John Chaytor described procedures for creating wrappers around class methods so they could be used as standard Windows callback procedures. Peter Sokolov has an update
Keywords Issue 18 update; Issue 18 errata; Wrapper around class method; Class methods; Class methods as callbacks; Windows callbacks; Memory allocation; MEM_COMMIT; MEM_DECOMMIT; Reserving virtual memory; MEM_RESERVE; MEM_RELEASE; MakeMIC unit

Back to top


Tooltips Under Your Control
Authors Brian Long Type: Article
Issue 43 : March 1999 View article View source code
Summary Brian Long has found some interesting and useful ways to customise Delphi's tooltips capability for use in your own applications: persistent hint windows, text completion tooltips and display improvements to string grids and other components
Keywords Tooltips; Hints; Persistent hint windows; Customised tooltips; Customised hint windows; THintWindow; Tooltip symbol insight; Code parameters window; TTokenWindow; TPropertyHintWindow; Non-standard tooltips; Hint windows that stay open; HintWindowClass; CalcHintRect; Application.OnActivate; Application.OnDeActivate; SWP_NOACTIVATE; SetWindowPos and ShowWindow; StringGrid obscured cells; Partly obscured grid columns; Partly obscured grid cells; Hint shows full cell content; Hint window; TStringGrid; Text completion tooltips; MouseToCell; Find cell under mouse cursor; Mouse messages; Message handling; TDBGrid; MouseToCoord; Field under mouse cursor; TListBox obscured items; Item too wide for listbox; Display wide item in listbox; Hint window beeps; Click on hint window

Back to top


Under Construction: Delphi 4 and CORBA
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 43 : March 1999 View article View source code
Summary Bob Swart introduces CORBA Server and Client development for Delphi programmers, with a handy application to retrieve newsgroup messages from behind your company's firewall!
Keywords Under Construction; CORBA; Delphi 4; Client/Server; ORB and IIOP; IDL; Marshalling; Newsgroup CORBA server; NNTP newsgroup reader; TCorbaImplementation; Type library editor; Visibroker Smart Agent; CORBA development

Back to top


DelayLoading of DLLs
Authors Hallvard Vassbotn Type: Article
Issue 43 : March 1999 View article View source code
Summary Hallvard Vassbotn takes an in-depth tour of the use of DLLs, implementing DelayLoading in Delphi. As seen first in Microsoft's Visual C++ 6.0, this allows your DLLs to be loaded only when the first DLL routine is called, as well as choosing between different DLL versions at runtime, conditional loading of feature-specific DLLs and more
Keywords DelayLoading of DLLs; Microsoft Visual C++ 6.0; /DELAYLOAD option; DLL loading on demand; Implicit and explicit import; LoadLibrary; GetProcAddress; Writing and using DLLs; Thunking; External directive; Name directive; DLL routines case sensitive; Import by ordinal value; Import by name; Index directive; DLL import unit; Handling missing DLLs; DLL version problems; Routines missing from DLLs; Dynmic linking of DLLs; Generating code at runtime; Generating executable code; CPU instruction opcodes; Machine code; Bug in Delphi debugger; Integrated debugger bug; Breakpoint bugs; Using SizeOf in BASM; Built-In Assembler BASM; SizeOf always returns $34; Packages and performance; Packages and DLL calling; Allocating executable memory; PAGE_EXECUTE; PAGE_EXECUTE_READWRITE; VirtualProtect; GetMem; VirtualAlloc; Memory access rights; HeapCreate; HeapAlloc; HeapSize; HeapFree; HeapDestroy; Private memory heaps; Memory fragmentation; __fastcall convention; Peter Sawatzki

Back to top


One Last Compile...
Authors Type: Article
Issue 43 : March 1999 View article No source code
Summary Onwards and Upwards
Keywords One last compile...

Back to top


Delphi, Dates And The Year Two Thousand
Authors David Sutherland Type: Article
Issue 43 : March 1999 View article No source code
Summary David Sutherland reviews the origins of the so-called millennium bug, showing how it can affect more than you might think. He has strategies for overcoming date-related problems to ensure your systems are compliant
Keywords Year 2000, Y2K; Millennium bug; Date handling; Year two thousand; Two-digit date data; Year 2000 compliance; Leap year; Inprise and Year 2000; Paradox and Year 2000; Interbase and Year 2000; dBase and Year 2000; Windows short date format; Windows date format; Regional settings; TDateTimePicker year 2000; ShortDateFormat; Four-digit year in Delphi; TwoDigitYearCenturyWindow; StrToDate, StrToDateTime; Adrock date classes; TAdrockDate component; Date arithmetic

Back to top


Beating the System: Protecting Your Intellectual Property
Authors Dave Jewell Type: Article
Issue 43 : March 1999 View article View source code
Summary Dave Jewell discusses how to protect your trial components against the attentions of pirates and encourage users to register them. He has some clever little tricks up his sleeve...
Keywords Beating the System; Code obfuscation; Protection from piracy; Detect Delphi running; Component trial versions; Shareware; Is Delphi IDE running; FindWindow; TAppBuilder; Finding running programs; Delphi IDE hidden windows; GetProcAddress; Parent process; ToolHelp unit; Process32First; Process32Next; Program launched from Delphi; GetCurrentProcessID; Windows NT PSAPI; IsDebuggerPresent

Back to top


COM Corner: ActiveX Documents, Part 2
Authors Steve Teixeira Type: Article
Issue 43 : March 1999 View article View source code
Summary Steve Teixeira concludes his discussion of building ActiveX Document Servers.
Keywords COM Corner; COM programming; ActiveX Document Server; Out of process server; In process server; InprocHandler32; CLSID; DocObject; Insertable key in ProgID; In process handler; DAX ActiveX framework; ActiveX Documents; IOleDocument; IOleDocumentView; InPlaceDeactivate; IOleInplaceObject; OnDocWindowActivate; InPlaceActivate; Overriding static methods; HTML OBJECT tag; Registering ActiveX server

Back to top


Better Calculated Fields
Authors Rohit Gupta Type: Article
Issue 43 : March 1999 View article View source code
Summary Rohit Gupta describes how calculated fields should have been
Keywords Calculated fields; Database applications; Interposer classes; Stephen Posey; Overriding routines; Enhanced calculated fields; Datachange event

Back to top


Task Bar Calculations
Authors Brian Long Type: Clinic
Issue 43 : March 1999 View article View source code
Summary Task Bar Calculations
Keywords Windows task bar; Is task bar present; Task bar location on screen; SystemParametersInfo; Monitor working area

Back to top


IDE Dissatisfaction
Authors Brian Long Type: Clinic
Issue 43 : March 1999 View article View source code
Summary IDE Dissatisfaction
Keywords Delphi IDE; Code completion window width; Tooltip delay time; DefHintHidePause; Tooltip pause; Application.HintHidePause

Back to top


More On Property Editors
Authors Brian Long Type: Clinic
Issue 43 : March 1999 View article View source code
Summary More On Property Editors
Keywords Property editors; DataField property; Custom property editor; Data-aware components

Back to top


Delphi 4 Disservice
Authors Brian Long Type: Clinic
Issue 43 : March 1999 View article View source code
Summary Delphi 4 Disservice
Keywords Delphi 4 and NT services; Start and stop an NT service; Windows NT; TServiceApplication; TService; Creating NT services; NT service not in IDE wizard; SVCMGR unit

Back to top


Missing DBGrid Events
Authors Brian Long Type: Clinic
Issue 43 : March 1999 View article View source code
Summary Missing DBGrid Events
Keywords TDBGrid; Column resize in DBGrid; Mouse dragging; Column resize events; FGridState; gsColResizing; CalcDrawInfo; CalcSizingState; dgIndicator current record

Back to top


One Step ActiveX
Authors Brian Long Type: Clinic
Issue 43 : March 1999 View article View source code
Summary One Step ActiveX
Keywords One step ActiveX; Creating ActiveX controls; Non-visual components; DAX; Convert component to ActiveX

Back to top


Beating the System: Putting The Squeeze On
Authors Dave Jewell Type: Article
Issue 44 : April 1999 View article View source code
Summary Dave Jewell shows how vulnerable unprotected Delphi applications are to the attentions of hackers and describes techniques you can use to protect your software
Keywords Beating the System; Protecting against hackers; Software security; Application security; Hacking; Reverse engineering; Merlin; Extracting resources; TImageList bug with Delphi 4; Create project from EXE file; Form files from EXE file; EXE2DPR utility; Protecting trial software; UpdateResource; LoadLibraryEx; EnumResourceNames; RT_RCDATA resource; stdcall with API enumeration; Callbacks; VCL callbacks; ObjectBinaryToText; EXE file compressors; Compressing executable files; ASPack; Shrinker; Petite; PkLite

Back to top


An HTML File Reference Corrector
Authors Paul Warren Type: Article
Issue 44 : April 1999 View article View source code
Summary Paul Warren shows how to move a whole bunch of HTML files whilst keeping the relative links within them intact. As well as saving you hours of link-fixing, the article also covers a number of techniques which you can apply to many other projects too.
Keywords HTML file references; Hyperlinks; HTML

Back to top


Surviving Client/Server: Power SQL
Authors Steve Troxell Type: Article
Issue 44 : April 1999 View article View source code
Summary Lots of people think that SQL is only good for input/output work, simple joins and trivial calculations. When faced with some complex processing, they give up on SQL too quickly and code the task in Delphi instead. But, says Steve Troxell, with a little thought, SQL can do an amazing amount and give you shorter, more efficient code that's easier to debug!
Keywords Surviving Client/Server; SQL; Program logic in SQL; SQL for data processing; Complex SQL; Effective date of data; DateAdd in SQL Server; Date arithmetic in SQL; SQL DECLARE CURSOR

Back to top


Safer Sockets
Authors Primoz Gabrijelcic Type: Article
Issue 44 : April 1999 View article View source code
Summary Sockets make a frequent appearance in internet applications; Primoz Gabrijelcic outlines the problems he experienced with Delphi's TWinSocketStream class and details workarounds to get your projects moving again, including a new replacement class.
Keywords TWinSocketStream bugs; Streams; Winsock programming; Sockets; ScktComp unit; TCP/IP; Slow and noisy modem lines; Buffer overwrite

Back to top


One Last Compile
Authors Type: Article
Issue 44 : April 1999 View article No source code
Summary Delphi and the Beautiful People
Keywords One last compile...

Back to top


Algorithms Alfresco: Knocked Down, Made Small
Authors Julian Bucknall Type: Article
Issue 44 : April 1999 View article View source code
Summary This month Julian Bucknall describes some data compression algorithms, including Huffman encoding.
Keywords Algorithms Alfresco; Compression algorithms; Data compression; Huffman encoding; Huffman tree; Binary tree; Compress data stream

Back to top


COM Corner: CoPourri
Authors Steve Teixeira Type: Article
Issue 44 : April 1999 View article View source code
Summary Steve Teixeira answers some readers' queries on COM progamming: adding COM interface types to the type library editor, exchanging binary data between an Automation client and server, and getting Automation server events to fire back to multiple clients.
Keywords COM Corner; COM programming; Adding type definitions; Type library editor; Interface definition; Automation data exchange; Automation client and server; safearray; OleVariant; One object multiple clients; Surfacing events; Event handling in COM; TConnectionPoints.Kind; ckMulti; IConnectionPointContainer; RegisterActiveObject; GetActiveObject

Back to top


Under Construction: Delphi 4 And Java
Authors Bob Swart (aka Dr.Bob) , Hubert Klein Ikkink Type: Article
Issue 44 : April 1999 View article View source code
Summary Bob Swart is joined by Java expert Hubert Klein Ikkink this month, together they connect a Java applet to a Delphi web server application.
Keywords Under Construction; Java and Delphi; Socket programming; CGI programming; Java applet; Web-based To Do notes; Java to Delphi communication; Communication using sockets; TCP/IP; TServerSocket; stNonBlocking; stThreadBlocking; TClientSocket

Back to top


A Delphi Singleton Class: Update
Authors Marco Cant∙ Type: Article
Issue 44 : April 1999 View article View source code
Summary Marco Cant∙ and Hallvard Vassbotn have been discussing the best implementation of the Singleton pattern in Delphi between them, following Hallvard's article on the topic in the January 1999 issue.
Keywords Design pattens; Singleton pattern; Hallvard Vassbotn

Back to top


Bitmap Puzzle
Authors Brian Long Type: Clinic
Issue 44 : April 1999 View article View source code
Summary Bitmap Puzzle
Keywords Bitmap buttons; Bitmaps for TBitBtn; Glyph properties; NumGlyphs; TBitmap.TransparentColor; Bitmap transparency

Back to top


TTable Component Editor
Authors Brian Long Type: Clinic
Issue 44 : April 1999 View article View source code
Summary TTable Component Editor
Keywords TTable component editor; Writing component editors; Adding component editors; TDefaultEditor; TDataSetEditor; DsgnIntf unit; GetComponentEditor

Back to top


Treeviews And Tooltips
Authors Brian Long Type: Clinic
Issue 44 : April 1999 View article View source code
Summary Treeviews And Tooltips
Keywords Treeviews and tooltips; Windows NT and treeviews; Turn off Treeview tooltips; COMCTL32; TVS_NOTOOLTIPS

Back to top


Long And Short Filename Conversion
Authors Brian Long Type: Clinic
Issue 44 : April 1999 View article View source code
Summary Long And Short Filename Conversion
Keywords Long and short filenames; Long to short filename; Short to long filename; ExtractShortPathName; GetShortPathName; TSearchRec

Back to top


Internet Cookies
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 45 : May 1999 View article View source code
Summary Cookies are a good way of saving state in your web applications and Bob Swart shows how easy they are to implement, without any expensive add-on packs or Delphi's Client/Server version
Keywords Internet cookies; Saving state; Web applications; Fat URLs; HTTP; CGI and ISAPI; CGI forms; Hidden fields in HTML forms; WebBroker; Persistent data in web apps; Web browser; Setting, retrieving cookies; Set-Cookie; HTTP header

Back to top


Beating The System: Fun With Bitmaps
Authors Dave Jewell Type: Article
Issue 45 : May 1999 View article View source code
Summary Dave Jewell has been twiddling pixels: he shows how to manipulate bitmaps at the pixel level to create a variety of effects in double quick time, using the ScanLine property of Delphi's TCanvas class. Brightness changes, flipping and Gaussian blurs are amongst the facilities offered by our maestro.
Keywords Beating the System; Bitmap manipulation; ScanLine property; Imaging toolkit; TCanvas.Pixels array; TBitmap.Scanline; PixelFormat; Bitmap brightness; Bitmap flipping; Gaussian blurs

Back to top


DCOM Deployment Secrets
Authors Roy Nelson Type: Article
Issue 45 : May 1999 View article View source code
Summary Roy Nelson describes some common issues faced by developers in the deployment of DCOM applications, helping us avoid the usual pitfalls!
Keywords DCOM deployment; E_NOINTERFACE error; Proxy and stub DLLs; CreateRemoteCOMObject; CoCreateInstanceEx; Deployment of DCOM clients; DCOM installation problems; QueryInterface; Registry settings; Type library; LoadTypeLibEx; Register DCOM server; Unregister DCOM server; DCOM out of process server

Back to top


Algorithms Alfresco: Cherchez La Femme
Authors Julian Bucknall Type: Article
Issue 45 : May 1999 View article View source code
Summary Julian Bucknall takes the lid off Lempel and Ziv's LZ77 compression algorithm, saying hello to messrs Shannon, and Fano along the way, plus the PKZip Deflate method. The patent minefield introduced courtesy of Unisys is also outlined. Julian neatly sidesteps all these problems by creating our very own Algorithms Alfresco variant of LZ77, which is of course better!
Keywords Algorithms Alfresco; Compression algorithms; LZ77 compression; Data compression; Shannon-Fanno; Lempel-Ziv; Software patents; Compression dictionary; Sliding window; PkZip; Deflate algorithm; Microsoft Expand; GIF compression; Unisys; LZW algorithm, LZ78; Circular queue; Hash table; Linked list

Back to top


Under Construction: Delphi 4 And Java, Part 2
Authors Bob Swart (aka Dr.Bob) , Hubert Klein Ikkink Type: Article
Issue 45 : May 1999 View article View source code
Summary Bob Swart and Hubert Klein use CORBA to enable communication between Delphi and Java applications
Keywords Under Construction; Delphi to Java communication; CORBA programming; Multi-tier applications; CORBA server; CORBA objects; Type libraries; Java, JBuilder; Diary application

Back to top


Is Delphi Running?
Authors Brian Long Type: Article
Issue 45 : May 1999 View article View source code
Summary Often you want code to behave differently at design-time and runtime, or find out if Delphi is installed, running or launched your application. Brian Long explains all the tricks you need to know, covering all versions of Delphi.
Keywords Is Delphi running?; Is Delphi IDE running?; Program launched by Delphi?; Trial software; Is Delphi installed?; Execution in Delphi IDE; Design time packages; csDesigning; ComponentState; Trial components; Register procedure; IDE versus application; Delphi launched the program; Delphi registry entries

Back to top


Getting The Message
Authors David Baer Type: Article
Issue 45 : May 1999 View article View source code
Summary David Baer looks into the mysteries of Windows messaging and how it interacts with Delphi, presenting a very useful component which can be used to eavesdrop on Delphi internal message flows in a far more intimate way than external spy tools like WinSight32
Keywords Windows message handling; Delphi and messages; Using Windows messages; SendMessage; Windows API; TControl.Perform; WndProc; Window handles; TObject.Dispatch; Windows messages explained; VCL messages; DoControlMsg; Message spy utility; Monitoring messages; CM_MOUSEENTER; CM_MOUSELEAVE; CM_FONTCHANGED; Hooking Windows messages; VMT

Back to top


One Last Compile...
Authors Type: Article
Issue 45 : May 1999 View article No source code
Summary Life, the universe and components.
Keywords One last compile...

Back to top


COM Corner: Microsoft Transaction Server, Part 1
Authors Steve Teixeira Type: Article
Issue 45 : May 1999 View article No source code
Summary and this month Steve Teixeira explains how it's really about much more than transactions. The COM-based MTS technology has been generating much interest lately
Keywords COM Corner; COM programming; MTS; Microsoft Transaction Server; Scalable applications; Multi-tier systems; N-Tier systems; Stateful objects; Stateless objects; MTS packages; MTS security

Back to top


Debugging Web Applications
Authors Brandon Smith Type: Article
Issue 45 : May 1999 View article View source code
Summary Brandon Smith reports some useful techniques for debugging ISAPI, ASP and similar web applications. His recent review of web app development tools for Delphi is on this month's disk too!
Keywords Debugging web applications; Debugging ISAPI; Changing ISAPI and ASP DLLs; Restarting web server; Internet Information Service; NT Server 4 and IIS 4; Replacing loaded DLLs; Turning off IIS caching; In-memory caching

Back to top


GUID Equality
Authors Brian Long Type: Clinic
Issue 45 : May 1999 View article View source code
Summary GUID Equality
Keywords Are two GUIDs the same?; GUID equality; GUID is not a string

Back to top


TStringLists And Files
Authors Brian Long Type: Clinic
Issue 45 : May 1999 View article View source code
Summary TStringLists And Files
Keywords TStringLists and files; LoadFromFile; Character #0 is end of file

Back to top


CORBA Limitation?
Authors Brian Long Type: Clinic
Issue 45 : May 1999 View article View source code
Summary CORBA Limitation?
Keywords CORBA IDL and Delphi; Translating IDL to Delphi; Type library editor; Type library as Pascal; Skeleton and stub classes; CORBA server

Back to top


CORBA And DUN
Authors Brian Long Type: Clinic
Issue 45 : May 1999 View article View source code
Summary CORBA And DUN
Keywords CORBA and dial up networking; DUN; Windows AutoDial; TCP/IP

Back to top


Paradox Update
Authors Brian Long Type: Clinic
Issue 45 : May 1999 View article View source code
Summary Paradox Update
Keywords Paradox file corruption; See website for new version!

Back to top


NT Service Wizard Update
Authors Brian Long Type: Clinic
Issue 45 : May 1999 View article View source code
Summary NT Service Wizard Update
Keywords

Back to top


Long Filename Update
Authors Brian Long Type: Clinic
Issue 45 : May 1999 View article View source code
Summary Long Filename Update
Keywords Long Filename Update; SHGetFileInfo; SHGFI_DISPLAYNAME

Back to top


Update: Tooltips Under Your Control
Authors Brian Long Type: Clinic
Issue 45 : May 1999 View article View source code
Summary Update: Tooltips Under Your Control
Keywords Tooltips update Issue 43; Tooltip on DBGrid memo field; Memo contents in tooltip

Back to top


ActiveX Data Objects
Authors Guy Smith-Ferrier Type: Article
Issue 46 : June 1999 View article View source code
Summary Guy Smith-Ferrier describes Microsoft's new ADO technology for data access and shows how to use it in your Delphi applications. Powerful database access and, look Ma, no BDE!
Keywords ActiveX Data Objects; ADO; Database access; BDE Borland Database Engine; IDAPI; OLE DB; ODBC; COM; DAO Data Access Objects; RDA Remote Data Access; Multi-tier applications; ADO Recordset; Early or late binding; Dispinterfaces; ADO and BDE equivalents; ADO Connections; ADO exception handling; EOLEException; OLE DB Provider; ADO transaction handling; ADO schema information; ADO connection pooling; Briefcase model; Recordset persistence; TClientDataset; ADO third party products; Cybermagic Adonis; Lectum ADOSolutio; Delphi 5; ADO installation

Back to top


Algorithms Alfresco: Occupy Your Mind
Authors Julian Bucknall Type: Article
Issue 46 : June 1999 View article View source code
Summary Julian Bucknall shows how to efficiently parse algebraic expressions by converting them to reverse Polish notation (no, not by hand, silly!). He also reveals that even columnists fail on some projects ands cheats at his brother-in-law's homework too...
Keywords Algorithms Alfresco; Expression parsing; Algebra; Reverse Polish Notation RPN; Expression evaluation; Recursive descent parser; Stack parser; Parentheses in algebra; Operator precedence; Recursion; Unary minus and subtraction; ObStack data structure; Storing objects; Efficient string stack; Efficient string storage; Permutations

Back to top


A Delphi CGI File Uploader
Authors Paul Warren Type: Article
Issue 46 : June 1999 View article View source code
Summary Paul Warren explains how to implement multipart form encoding in your CGI applications as an alternative to URL encoding and shows how we can use it to upload files to a web server from CGI applications.
Keywords CGI; Web applications; URL encoding; Multipart/form-data encoding; ENCTYPE; HTML forms; Uploading files with CGI; RFC 1867; Content-disposition; CGI unit; MIME, UU, Base64; Internet Explorer; Netscape Navigator 3

Back to top


Beating the System: Deciphering The DCU, Part 1
Authors Dave Jewell Type: Article
Issue 46 : June 1999 View article View source code
Summary Dave Jewell starts unravelling the DCU compiled unit file format which is so crucial to Delphi's blazingly fast compilation speeds and gives us some pointers on how this knowledge can be used to good effect in your work.
Keywords Beating the System; DCU file format; Delphi compiler and linker; Compiled unit files; Packages; Dissassembling; Kibbitz; DCU version information; DCU compile date and time; Scanline update; TRGBQuadArray; Greyscaling a bitmap; Bitmap filters; File searching

Back to top


Under Construction: Nested Tables
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 46 : June 1999 View article View source code
Summary Bob Swart explains what TNestedTable is all about and how we can make use of it in multi-tier application development.
Keywords Under Construction; Nested tables; TNestedTable; Database; Nested dataset; BDE; Oracle 8 nested detail set; Master-detail relationships; Multi-tier applications; Master-detail and multi-tier; N-Tier; Provider component; TClientDataSet; DCOM; DataSetField

Back to top


Distributed Application Development With Packages
Authors Brian Long Type: Article
Issue 46 : June 1999 View article View source code
Summary Brian Long explains how Delphi's packages can do much more than you imagined: he shows how to create applications that you can enhance and upgrade simply by shipping extra packages, just like Delphi's IDE can be upgraded by adding in 'packaged' wizards, property editors and the like.
Keywords Packages; Distributed applications; Application plug-in modules; Extending applications; Plug-ins; Dynamic package loading; Design-time packages; Runtime packages; Installing components; Wizards and experts; Property editors; Component editors; RegisterComponents; RegisterNoIcon; RegisterPropertyEditor; RegisterLibraryExpert; ExptIntf unit; Customising tooltips; THintWindow; THintWindowClass; Archaeopteryx in Delphi 4; Delphi add-in packages; Loading, unloading packages; Tracking objects by address; Tracking objects by group; FreeEditorGroup; CurrentGroup; UnRegisterExpertGroup; LoadPackage; GetPackageDescription; Packages versus DLLs; Partitioning applications; Locate routine in a package; Name mangling; GetPackageInfo; Extender packages; Abstract classes; Object browser

Back to top


COM Corner: Microsoft Transaction Server, Part 2
Authors Steve Teixeira Type: Article
Issue 46 : June 1999 View article View source code
Summary Steve Teixeira completes his examination of using MTS in Delphi with a practical example for us to experiment with.
Keywords COM Corner; COM p[rogramming; MTS; Microsoft Transaction Server; MTS example application; Building MTS objects; MTS object wizards; TMtsAutoObject; Creating MTS applications; MtsObj unit; TAutoObject; Mtx unit; IObjectContext methods; Stateless objects; Resource dispenser; Shared property manager; ISharedPropertyGroupManager; Security in MTS; Installing an MTS server; Transaction Server Explorer; Debugging MTS applications; MTS package guid

Back to top


One Last Compile...
Authors Type: Article
Issue 46 : June 1999 View article No source code
Summary The tangled web we weave
Keywords One last compile...

Back to top


VCL Tab Question
Authors Brian Long Type: Clinic
Issue 46 : June 1999 View article View source code
Summary VCL Tab Question
Keywords HotTrack property; Tab caption font colour; Page controls; TPageControl

Back to top


DLL Question
Authors Brian Long Type: Clinic
Issue 46 : June 1999 View article View source code
Summary DLL Question
Keywords Using already loaded DLL; LoadLibrary; LoadLibraryEx; Inter-process communication; Shared memory; DLLs not globally available

Back to top


Incomplete Free
Authors Brian Long Type: Clinic
Issue 46 : June 1999 View article View source code
Summary Incomplete Free
Keywords Free method; Destroying objects; Set object variable to nil; Object references; Method types; Addresses and events; Object methods; Class methods; Event addresses

Back to top


Active OLE Object
Authors Brian Long Type: Clinic
Issue 46 : June 1999 View article View source code
Summary Active OLE Object
Keywords Active OLE object; CreateOleObject; GetActiveOleObject; EOleSysError; Calling automation server; OLE Automation; Single or multiple instance; RegisterActiveObject; Strong or weak registration; RevokeActiveObject; Cookie variable; CoLockObjectExternal; CoDisconnectObject; Automation server

Back to top


20 Rules For OOP In Delphi
Authors Marco Cant∙ Type: Article
Issue 47 : July 1999 View article View source code
Summary Marco Cant∙ suggests some simple rules for object oriented programming which will help you improve the structure of your applications and make them easier to both develop and maintain. Included are key recommendations on working with classes, components, forms, variables, properties and methods.
Keywords Object Oriented Programming; OOP; 20 rules for OOP; Program structure; Encapsulation; Forms classes not objects; Form classes; One class, one unit; Private and protected; Component naming; Event naming; Form methods; Custom form constructors; Global variables; Form1 and TForm1; Referring to global objects; Global form objects; Using form properties; Array properties; An OOP form wizard; Inheritance; Visual form inheritance; Using protected data; Designing methods

Back to top


Beating The System: Deciphering The DCU, Part 2
Authors Dave Jewell Type: Article
Issue 47 : July 1999 View article View source code
Summary Dave Jewell continues his exploration of the DCU compiled unit file format which is so crucial to Delphi, this month unravelling more of the detailed record structures, discussing the numeric encoding scheme used and providing a framework for further research.
Keywords Beating the System; DCU file format; Compiled unit file DCU; Delphi compiler and linker; Include files $I directive; Object files; Resource files; Compiler timestamp data; Unit modification date/time; Numeric encoding in DCU; Encoding numbers; Free Pascal compiler; Pascal on Linux

Back to top


A Web Server Text Difference Engine
Authors Paul Warren Type: Article
Issue 47 : July 1999 View article View source code
Summary Paul Warren builds on last month's CGI file uploader using multipart form encoding to create a web-server-based text file difference engine.
Keywords Text file difference engine; Web applications; CGI applications; Comparing text files; CGI component; CGI file uploads; Multiple file uploading; World wide web, internet

Back to top


Algorithms Alfresco: Date Stamp
Authors Julian Bucknall Type: Article
Issue 47 : July 1999 View article View source code
Summary Julian Bucknall shows us easy and efficient ways to work with business dates, including business date arithmetic, with positively no Y2K problems!
Keywords Algorithms Alfresco; Business dates; Date arithmetic; Working days; TDateTime problems; Delphi 1 TDateTime; Gregorian dates; Leap year calculation; Date validation; EncodeDate; DecodeDate; Date encoding; Binary searching; For loop gotcha; For loop counter undefined; Breaking out of a for loop; Interpolation search; Day of the week; DayOfWeek; ShortDayNames; LongDayNames

Back to top


Under Construction: Creative Debugging Techniques
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 47 : July 1999 View article View source code
Summary Bob Swart explains the various debugging techniques available in Delphi, including remote debugging.
Keywords Debugging techniques; Under Construction; Remote debugging; Integrated debugger; $L $D compiler directives; Local symbols; Turbo Debugger; Turbo Assembler; Host application; Debugging DLLs; IntraBob for debugging; Debugging CGI applications; Debugging ISAPI and NSAPI; Debugging distributed apps; Debugging ActiveForms; Debugging N-Tier apps; borrdbg.exe; Debug Server

Back to top


One Last Compile...
Authors Type: Article
Issue 47 : July 1999 View article No source code
Summary Ask not for whom the clock ticks
Keywords One last compile...

Back to top


Working With The InterBase API
Authors Paul Reeves Type: Article
Issue 47 : July 1999 View article View source code
Summary Paul Reeves explains how to get the best out of the InterBase DBMS by programming directly to its API in your Delphi applications, distilling some key information from the hundreds of pages in the C-oriented API handbook to help us understand how InterBase works and obtain useful performance gains.
Keywords InterBase API; InterBase Express Components; Database server; DBMS; SQL database; gds32.dll; Network protocol; Transactions; Connecting to InterBase; Dynamic SQL; malloc() and ReallocMem; InterBase Result Set; Parameter blocks; InterBase error handling; Extended SQL descriptor area; XSQLDA

Back to top


COM Corner: Language Support For COM
Authors Steve Teixeira Type: Article
Issue 47 : July 1999 View article No source code
Summary Steve Teixeira describes the support for COM programming built into the Delphi Object Pascal language, asking what does it mean to have these things built into the language, how do these features work, and what is the nature of their dependence on the COM APIs?
Keywords COM Corner; COM programming; Language support for COM; Object Pascal and COM; Variants; TVarData; OleVariant; VARIANT struct; oleaut32.dll; Variant arrays; SAFEARRAYs; Late binding; Early binding; IDispatch; _DispInvoke; VarDispProc; ComObj unit; VarDispInvoke; WideString; UNICODE; AnsiString; BSTR string type; SysAllocStringLen; Interfaces; IUnknown; QueryInterface; Dispinterface

Back to top


Invalid BLOb Handle
Authors Brian Long Type: Clinic
Issue 47 : July 1999 View article View source code
Summary Invalid BLOb Handle
Keywords Invalid BLOb handle; BDE error 10030 ($272E); BDE caching of BLObs; BLOBS TO CACHE value; 64 BLObs limit

Back to top


Object Etiquette
Authors Brian Long Type: Clinic
Issue 47 : July 1999 View article View source code
Summary Object Etiquette
Keywords Set object reference to nil; Nil after free; Disposing of objects

Back to top


Using Internet Explorer
Authors Brian Long Type: Clinic
Issue 47 : July 1999 View article View source code
Summary Using Internet Explorer
Keywords Using Internet Explorer; Internet Explorer ActiveX; shdocvw.dll; Microsoft Internet Controls; Automation and Explorer; IWebBrowserApp; Internet Explorer via COM; Calling Internet Explorer

Back to top


Temporary Internet Files
Authors Brian Long Type: Clinic
Issue 47 : July 1999 View article View source code
Summary Temporary Internet Files
Keywords Temporary internet files; Internet Explorer; desktop.ini; index.dat; UICLSID; SHDOCVW.DLL; IShellFolder interface; SHGetSpecialFolderLocation; Access recycle bin; IShellDetails

Back to top


XML: A Delphi Implementation
Authors David Baer Type: Article
Issue 48 : August 1999 View article View source code
Summary David Baer introduces XML: a new technology for inter-application communication on a grand scale, which is destined to become a very important part of many developers' lives. David explains the background and provides code to enable your applications to generate XML.
Keywords XML; Inter-application comms; Extensible markup language; HTML; Data transfer; Internet; Document Type Definition DTD; XML parser; Internet Explorer 5; COM; XML entities; XML tags, elements; XML namespace; XML datatypes; PCDATA; CDATA; XML attributes; Generating XML in programs; Document Content Definition; DCD; XSchema; W3C; Document Object Model DOM; XML in Delphi; XML classes

Back to top


Beating the System:Deciphering The DCU, Part 3
Authors Dave Jewell Type: Article
Issue 48 : August 1999 View article View source code
Summary Dave Jewell has the last instalment for now of his current mini-series on the DCU compiled unit file format, which this month expands the net to cover Delphi 3, 4 and 5 files!
Keywords Beating the System; DCU compiled unit file; DCU file format; Delphi compiler; Delphi 5

Back to top


Under Construction: Delphi Goes Dynamic
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 48 : August 1999 View article View source code
Summary Bob Swart discusses the dynamic creation of components and event handlers, with a fun little application to test out the techniques and keep your children amused too!
Keywords Under Construction; Create components at runtime; Dynamic creation of events; Dynamic event handlers; Create event handlers; Dynamic components; Constructor; Create method

Back to top


Algorithms Alfresco: Whirlpool
Authors Julian Bucknall Type: Article
Issue 48 : August 1999 View article View source code
Summary Julian Bucknall unravels CRC algorithms this month (that's Cyclic Redundancy Check in case you were wondering...): just the ticket for error checking on data transfers and a whole lot more.
Keywords Algorithms Alfresco; CRC calculations; Cyclic Redundancy Check; Error checking; Checksum; Data transmission errors; Communications; Data compression; XMODEM; Hashing as a checksum; ELF Hash; Galois Field theory; CRC-16 and CRC-32; Modulo 2 arithmetic; Polynomial division; CRC-CCITT; AAL5 32-bit CRC

Back to top


Delphi Memory Consumption
Authors Brian Long Type: Article
Issue 48 : August 1999 View article View source code
Summary Brian Long explains why Delphi applications can sometimes have a surprisingly large memory footprint, even with a tiny EXE file, and comes up with some clever ways to bring it back down to manageable proportions.
Keywords Application memory use; Program memory use; Memory consumption; Show memory use in Delphi; -HM command line switch; OLE32.DLL and OLEAUT32.DLL; GetMem, AllocMem; GetProcessWorkingSetSize; VirtualQuery; Application working set size; GetSystemInfo; Committed memory; System.AllocMemCount; System.AllocMemSize; GetAllocMemCount; GetAllocMemSize; DelphiMM unit; FindCmdLineSwitch; Command line switches; -HV command line switch; Delphi heap error checking; GetHeapStatus; THeapStatus; Reducing memory use; Used DLLs; Remove DLL dependency; Registry; LoadResourceModule; Delayloading of DLLs; OLE Automation; VariantClear; Variants; System.VarClear

Back to top


One Last Compile...
Authors Type: Article
Issue 48 : August 1999 View article No source code
Summary I'll have Mr Forsyth's latest, please
Keywords One last compile...

Back to top


COM Corner: Top 10 ActiveForm Questions
Authors Steve Teixeira Type: Article
Issue 48 : August 1999 View article View source code
Summary Steve Teixeira sorts out your problems in developing and deploying ActiveForms, including: differences over ActiveX, design and security considerations, properties, web deployment, keystrokes, databases, working with the browser and using data files
Keywords COM Corner; COM programming; ActiveForm development; ActiveForm and ActiveX; What are ActiveForms; TActiveFormControl; ActiveForm security; Using ActiveForms; Web-delivered ActiveForms; Deploying ActiveForms on web; Properties in ActiveForms; Required DLLs; IPersistPropertyBag; TActiveXControl; Keystroke handling; TranslateAccelerator; Databases and ActiveForms; Interfacing with web browser; HLinkNavigateString; HLinkGoForward; UrlMon unit; URLDownloadToFile; Open file in ActiveForm

Back to top


Resource Strings And Internationalisation
Authors Patrik Wang Type: Article
Issue 48 : August 1999 View article No source code
Summary Patrik Wang explains how to use Delphi's resource string capabilities to provide simple and effective internationalisation for your applications, including translation of strings embedded in the VCL
Keywords Resource strings; Internationalization; Internationalisation; Localisation; Localization; LoadString; Storing strings in resources; String constants

Back to top


Explorer Dialog Problem
Authors Brian Long Type: Clinic
Issue 48 : August 1999 View article View source code
Summary Explorer Dialog Problem
Keywords TOpenDialog; Hidden files in TOpenDialog; Windows Explorer

Back to top


Home Grown SQL Monitor
Authors Brian Long Type: Clinic
Issue 48 : August 1999 View article View source code
Summary Home Grown SQL Monitor
Keywords SQL Monitor; Monitoring SQL statements; Building an SQL monitor; SQL trace in applications; TBDECallback; Callbacks; cbTrace callback type; FSQLTraceCallback

Back to top


Windows Miscellany
Authors Brian Long Type: Clinic
Issue 48 : August 1999 View article View source code
Summary Windows Miscellany
Keywords Windows hints and tips; Windows shortcut keys; Windows key

Back to top


Inprise/Borland Conference
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 49 : September 1999 View article No source code
Summary Bob Swart reports from the 10th Annual Borland Conference
Keywords Borland Conference Report; Inprise Conference 1999

Back to top


The Factory Pattern
Authors Peter Hinrichsen Type: Article
Issue 49 : September 1999 View article View source code
Summary Peter Hinrichsen describes a real-world example that demonstrates how the factory pattern can save you time and make your code more maintainable and extensible
Keywords Factory pattern; Design patterns; Code maintainability; Code reuse; Creational pattern; Creating objects; Object of unknown class; Set object class at runtime; Selecting a report to run; Complex if then else; Complex if..tehn..else; Procedural programming; Class-reference types; Class of...; Call create; Inherited create; Poor man's singleton pattern; Abstract factory; Concrete factory

Back to top


Algorithms Alfresco: Knock on Wood
Authors Julian Bucknall Type: Article
Issue 49 : September 1999 View article View source code
Summary Julian Bucknall runs through the basics of binary trees, in preparation for next month's Gold Issue Special on red-black binary trees. Fasten your seat belts.
Keywords Algorithms Alfresco; Binary trees; Binary search trees; Linked list as a tree; Searching; Data structures; Stack class; Binary tree traversal; Balanced tree; Generating EPS files; Encapsulated PostScript; Writing PostScript

Back to top


One Last Compile...
Authors Type: Article
Issue 49 : September 1999 View article No source code
Summary Ladies and gentlemen, I present to you, in the blue corner: Delphi 5!
Keywords One Last Compile...

Back to top


A Better Build Process
Authors Primoz Gabrijelcic Type: Article
Issue 49 : September 1999 View article View source code
Summary Primoz Gabrijelcic has created a methodology and toolset to allow him to easily create debug and release builds of his application suites, with automated incrementing of version information too, all from the command line.
Keywords Building a project; Command line utilities; Compiling in the IDE; Release and debug builds; Build process; Command line compiler; Version information; VERSION resource; DCC32.EXE; dcc32.cfg; Project configuration file; Project options settings; BRCC32.EXE; Resource compiler; Project settings file (.DOF); Batch files; Help compiler; Include file from help; Help project file (.hpj); EXE compresssor

Back to top


Under Construction: Distributed Efficiency
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 49 : September 1999 View article View source code
Summary Bob Swart finds that for today's distributed applications optimisation means much more than speeding up a slow but frequently used routine. This month he shows how we can measure the amount of data transfer going on and then minimise it to improve response
Keywords Under Construction; Optimisation and efficiency; Distributed applications; Minimising network traffic; Web applications; TClientDataSet; Distributed computing; TDataSetProvider; CORBA, COM, DCOM; OLEnterprise; Middleware; TDCOMConnection; Monitoring data transfer; Tuning; TClientDataSet.PackedRecords

Back to top


Beating the System: When Worlds Collide
Authors Dave Jewell Type: Article
Issue 49 : September 1999 View article View source code
Summary Dave Jewell battles with Microsoft's common controls implementation: treeviews, toolbars, listviews and header controls
Keywords Beating the System; Common controls DLL; COMCTL32.DLL; TTreeView; TToolbar; TListView; Delphi 5 and common controls; Custom draw; Owner draw problems; THeaderControl; hsOwnerDraw; OnDrawSection; Outlook Express style; OnCustomDraw; OnAdvancedCustomDraw; NM_CUSTOMDRAW; WM_DRAWITEM; LBS_OWNERDRAW

Back to top


Porting KillerApp
Authors Andrew McLellan Type: Article
Issue 49 : September 1999 View article No source code
Summary The time has come for you to port your applications to Delphi 5. But don't despair, Andrew McLellan has been through the version upgrade pain many times before and has just the right procedure for you to follow.
Keywords Porting to Delphi 5; Porting apps to new version; Upgrading to Delphi 5; Compatibility issues

Back to top


ADO Support In Delphi 5
Authors Guy Smith-Ferrier Type: Article
Issue 49 : September 1999 View article No source code
Summary Guy Smith-Ferrier explains the support for ActiveX Data Objects introduced in Delphi 5 and shows how to get the best from it, which tools support it and which don't, plus porting from the BDE.
Keywords ADO in Delphi 5; ADO Express; ActiveX Data Objects; TADOTable; ConnectionString; Using ADO in Delphi 5; MDAC 2.1; ADO 2.1; MDAC SDK 2.0; Data Access Components; MDAC SDK 2.1 update; ADO version history; BDE versus ADO; TADOConnection; IsolationLevel; OLE DB providers; Data link files; OpenSchema; ADO transactions; ADO datasets; Utilities and tools for ADO; ADOX, ADOMD, JRO; ADO Multi-Dimensional; OLAP and ADO; Replication

Back to top


COM Corner: Creating Office 2000 COM Add-Ins
Authors Brian Long Type: Article
Issue 49 : September 1999 View article View source code
Summary Steve Teixeira says Office add-ins are fun as well as providing an excellent way to integrate your application with Microsoft's suite.
Keywords COM Corner; Office 2000 COM add-ins; Creating Office add-ins; Microsoft Office 2000; IDTExtensibility2; ConnectMode; OnConnection; OnDisconnection; OleVariant; safearray; Registering an Office add-in; MSADDNDR.TLB; Import tyle library; Events in Office add-ins; TAutoObjectFactory; Debugging COM add-ins

Back to top


Character Manipulation
Authors Brian Long Type: Clinic
Issue 49 : September 1999 View article View source code
Summary Character Manipulation
Keywords Character manipulation; Ord; Char; Get ANSI value of character

Back to top


SQL Server Problem
Authors Brian Long Type: Clinic
Issue 49 : September 1999 View article View source code
Summary SQL Server Problem
Keywords SQL Server login; Locale settings; Syntax error converting date

Back to top


DCOM UI Problem
Authors Brian Long Type: Clinic
Issue 49 : September 1999 View article View source code
Summary DCOM UI Problem
Keywords DCOM configuration; Restart Windows dialog; DCOMCNFG.EXE

Back to top


Daylight Savings Changeover
Authors Brian Long Type: Clinic
Issue 49 : September 1999 View article View source code
Summary Daylight Savings Changeover
Keywords Daylight savings changeover; When does clock change?; GetTimeZoneInformation; TTimeZoneInformation; Co-ordinated Universal Time; UTC time; TSystemTime; wDayOfWeek

Back to top


Terminating Programs
Authors Brian Long Type: Clinic
Issue 49 : September 1999 View article View source code
Summary Terminating Programs
Keywords Terminating programs; ShellExecute; FindWindow; PostQuitMessage; TerminateProcess; CreateProcess; ShellExecuteEx; WinExec; Running external program; Terminating external program; see_Mask_NoCloseProcess; fMask; hProcess; EnumThreadWindows; Getting a window handle; EnumWindows; GetWindowThreadProcessID; PROCESS_TERMINATE; WaitForSingleObject; SendMessageTimeout

Back to top


Computer Name In Registry
Authors Brian Long Type: Clinic
Issue 49 : September 1999 View article View source code
Summary Computer Name In Registry
Keywords Computer name in registry; Find computer name; TRegistry.RootKey; Windows NT

Back to top


New Delphi 5 Features
Authors Brian Long Type: Clinic
Issue 49 : September 1999 View article View source code
Summary New Delphi 5 Features
Keywords Delphi 5 features; DsgnIntf unit; Font names display; ImageIndex properties; Fontname properties; Automatic hotkeys; AutoHotKeys; RethinkHotKeys; MenuAnimation; Popup menu animation; AutoLineReduction; RethinkLines; GetOrdProp, SetOrdProp

Back to top


Data-Aware HTML Controls, 1
Authors Steve Troxell Type: Article
Issue 50 : October 1999 View article View source code
Summary Steve Troxell has developed a really neat way to generate web pages with content driven from databases, using markup codes in HTML pages, so website designers with no programming or database skills can easily create database-driven websites.
Keywords HTML; Web applications; Internet; SQL; Payroll and human resources; Data-aware HTML; Database web apps; Web page authoring; Markup languages; Application server; Templates; CGI; Parsing; Encapsulation; ASP, Java Server Pages; XML; Tags; XML parsers; CUEsoft XML parser; Document Object Model DOM; DOM class; Generating HTML; Hidden HTML fields

Back to top


Under Construction: Delphi 5 InternetExpress
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 50 : October 1999 View article No source code
Summary Bob Swart describes Delphi 5's InternetExpress, which combines WebBroker and MIDAS technologies, producing HTML and XML for ultra-thin clients. And as it's Dr.Bob, you can be sure he explains it step by step.
Keywords Under Construction; InternetExpress; Delphi 5; WebBroker; MIDAS; HTML; XML; 4-Tier applications; Stateless MIDAS; Middleware; Creating a MIDAS server; Remote data module; Data Module Designer; Master-detail relationship; DataSetProvider; Field Link Designer; WebConnection; XMLBroker; MidasPageProducer

Back to top


Delphi Junction
Authors David Baer Type: Article
Issue 50 : October 1999 View article No source code
Summary A crossword puzzle from David Baer
Keywords Delphi Junction crossword

Back to top


Localising With Delphi 5
Authors Marco Cant∙ Type: Article
Issue 50 : October 1999 View article View source code
Summary how we can make the most use of it. Marco Cant∙ unravels the localisation capability in Delphi 5 and explains
Keywords Localising with Delphi 5; Localisation, localization; Localizing; Internationalisation; Integrated Translation ITE; Delphi 5; Resource DLL Wizard; Delphi Translation Pack; resourcestring; Translation Manager; Translation Repository; Translating strings; Todo list bug; Translating VCL strings; Dynamic language loading; RichEdit

Back to top


Beating the System: Delphi Code Generation Hints
Authors Dave Jewell Type: Article
Issue 50 : October 1999 View article No source code
Summary Dave Jewell provides insights into how Delphi generates its code, with handy pointers on FOR loops, optimisation tips and syntactic short cuts.
Keywords Code generation; FOR loops; Control variable undefined; FOR loop counter; Pascal language; Result variable; Function result; Break and goto; Optimisation; const qualifier; Functions and procedures; Passing strings; Stack frame; Reference counting; Free; Initialising variables; InitInstance; Object member fields; Showing modal forms

Back to top


Win32 Inter-Process Communication
Authors Brian Long Type: Article
Issue 50 : October 1999 View article View source code
Summary Brian Long gives us a thorough tutorial on getting applications to talk to each other and exchange data, even over a network. Brian explains all those fiddly API calls, with easy-to-use code.
Keywords Inter-process communication; IPC; Communicating between apps; Win32; 32-bit Windows; Windows messages; Message handling; Sending messages to apps; Window handle; WParam and LParam; PostMessage; SendMessage; Window procedure WndProc; Queued messages; Application.ProcessMessages; Message urgency; HWnd_Broadcast; Broadcasting messages; Send message to all windows; BroadcastSystemMessage; BroadcastSystemMessageA; RegisterWindowMessage; Registering custom messages; FindWindow; Finding window handle; Windows Atom; wm_CopyData message; Sending data with messages; TCopyDataStruct; Mailslots; Send message over a network; Mailslot server; Mailslot client; CreateMailslot; SetMailslotInfo; GetMailslotInfo; Writing to a mailslot; Anonymous pipes; Named pipes; CreatePipe; CreateNamedPipe; Named pipes Windows NT only; Memory mapped files; File mapping; File view; CreateFileMapping; Named shared memory; Mutex

Back to top


Algorithms Alfresco: Red Alert
Authors Julian Bucknall Type: Article
Issue 50 : October 1999 View article View source code
Summary Julian Bucknall explains red-black binary trees: what they are, how to use them and what benefits they give.
Keywords Algorithms Alfresco; Red-black binary trees; Data structures; Binary search trees; Balanced trees; Tree balancing algorithms; Splay tree; Zi-g-zag and zig-zig; AVL trees

Back to top


XML: A Delphi Implementation, 2
Authors David Baer Type: Article
Issue 50 : October 1999 View article View source code
Summary David Baer continues his series on using XML in Delphi (continuing from the August issue). As promised, this time David shows how to hook up his XML classes to an XML parser.
Keywords XML in Delphi; XML class framework; DCDs; DTDs; XML Data Reduced; XML schemas; XML parsers; Document object model, DOM; Simple API for XML, SAX; msxml.dll; Microsoft XML parser; UTF-8 encoding; Standalone XML; XML processing instruction; Tree view of XML

Back to top


One Last Compile...
Authors Type: Article
Issue 50 : October 1999 View article No source code
Summary An artist and his palette.
Keywords One Last Compile...

Back to top


Exceptional Stack Tracing
Authors Hallvard Vassbotn Type: Article
Issue 50 : October 1999 View article View source code
Summary Hallvard Vassbotn shows how to find what bug in your code causes those pesky exceptions: yes, even access violations. Why be content with an error address which refers to code buried deep in the VCL or RTL when you can get straight to the offending line!
Keywords Stack tracer; Find causes of exceptions; Causes of access violations; Debugging; Exception stack tracing; Hook exception handling; Application.OnException; EAccessViolation; Hooking exceptions; Hardware exceptions; DL import address table, IAT; Executable file format; ImportDescriptor table; Thunking of system DLL; Windows 95; GetProcAddress; Kernel32.RaiseException; Stack frames; Runtime location information; RTLI; MAP files

Back to top


COM Corner: New COM Features In Delphi 5
Authors Steve Teixeira Type: Article
Issue 50 : October 1999 View article View source code
Summary Steve Teixeira has all the information.
Keywords COM Corner; COM programming; COM in Delphi 5; Active Server Objects; ASP Active Server Pages; VBScript and JScript; TASPObject; COM Server components; Microsoft Office; Automation with Office; Type library updates dialog; HResult in Delphi 4 and 5

Back to top


Property Editor Question
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Property Editor Question
Keywords Property editors; Class name of object; TPropertyEdit; GetComponent

Back to top


Page Control Query
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Page Control Query
Keywords Active tab in TPageControl; ActivePageIndex; ActivePage; TTabSheet

Back to top


Customised Alias
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Customised Alias
Keywords Customised Alias; Database alias at runtime

Back to top


Customised Status Bar
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Customised Status Bar
Keywords Status bar panel colour; TStatusPanel; psOwnerDraw; OnDrawPanel

Back to top


COM Server Components
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary COM Server Components
Keywords Delphi 5 COM servers; COM server components

Back to top


Fancy Font Dialog
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Fancy Font Dialog
Keywords Custom font dialog; TFontDialog events

Back to top


Multi-User Delphi Installation
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Multi-User Delphi Installation
Keywords Multi-user Delphi install; User settings in registry; HKEY_CURRENT_USER

Back to top


Components On The Clipboard
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Components On The Clipboard
Keywords Components on clipboard; Clipboard.Setcomponent; Multiple components; Customs clipboard formats; Clipbrd unit; CF_COMPONENT; CF_COMPONENTS; TMemoryStream; Copy components on clipboard

Back to top


Custom TLabel Component
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Custom TLabel Component
Keywords Custom TLabel; OnMouseMove; Label changes mouse enters; cm_MouseEnter; cm_MouseLeave; Message handling; Hyperlink labels

Back to top


User-Defined Exceptions
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary User-Defined Exceptions
Keywords User-defined exceptions; Exception class; Redefining Exception

Back to top


More On Active OLE Object
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary More On Active OLE Object
Keywords Active OLE object; DCOM; NT Services; CreateRemoteCOMObject

Back to top


Delphi 5 Easter Eggs
Authors Brian Long Type: Clinic
Issue 50 : October 1999 View article View source code
Summary Delphi 5 Easter Eggs
Keywords Delphi 5 Easter Eggs

Back to top


Safecall Defined
Authors Brian Long Type: Article
Issue 51 : November 1999 View article View source code
Summary Brian Long explains Delphi's safecall reserved word in depth, showing its work in handling exceptions in your COM and Automation applications
Keywords SAFECALL; Exception handling; COM and Automation errors; Environment options dialog; Exceptions in DLLs; COM error objects; ICreateErrorInfo; STDCALL; ISupportErrorInfo; HResult; Type library; S_OK and E_UNEXPECTED; Accessing HResult; Hardware exceptions; Unexpected failure exception; Safecall function mapping; SafeCallException; HandleAutoException; SafeCallErrorProc; CheckAutoResult; SysUtils unit; Runtime error 229; IServerExceptionHandler; Error logging; Access violation

Back to top


Beating The System: Taming the File System, 1
Authors Dave Jewell Type: Article
Issue 51 : November 1999 View article View source code
Summary Here's a shock: Dave Jewell is just a tiny bit jealous of Visual Basic programmers! The reason? The FSO (File System Library), which gives easy access to all kinds of information about the Windows file system. So this month he sets out to put matters right by building his very own 100% pure Delphi file system class
Keywords Beating the System; File system class; FSO object model; File system library; Visual Basic; Microsoft Scripting Runtime; SCRRUN.DLL; TFileSystemObject; Drive types; Installed drives; Fixed and removable drives; Is drive ready; Disk space free; Disk size; GetDiskFreeSpaceEx; DiskFree; Drives over 2Gb size; Network drive disk quota; Drive available space; Disk volume name; FAT file system; Disk serial number

Back to top


One Last Compile...
Authors Type: Article
Issue 51 : November 1999 View article No source code
Summary If I had a hammer.
Keywords One Last Compile...

Back to top


Remote Monitoring
Authors Paul Warren Type: Article
Issue 51 : November 1999 View article View source code
Summary Paul Warren has found a neat way to monitor the output of an expensive instrument control and data acquisition package on an intranet, using a web technique called client pull
Keywords Remote equipment monitoring; Instrument monitoring; Data acquisition; Web animation; Server push; Client pull; GetDC and GetWindowDC; Device context; Make bitmap of window; Convert bitmap to JPEG; FileWrite; Refresh HTML META tag; http-equiv; SetForegroundWindow; RedrawWindow

Back to top


Under Construction: Delphi 5 InternetExpress, 2
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 51 : November 1999 View article View source code
Summary Bob Swart continues his exploration of Delphi 5's InternetExpress technology. This month, Bob discusses how to limit the amount of data being sent from the server to the browser, how to handle reconcile errors, and even how to use the technology without using a MIDAS licence
Keywords Under Construction; InternetExpress Delphi 5; Optimisation; Reconcile errors; MIDAS; WebConnection; XMLBroker; MidasPageProducer; DataSetProvider; TSession.AutoSessionName; Multi-user database; ADO; Visual Data Module Designer; ADOTable; TClientDataset; MIDAS 3 is stateless; Limiting number of records; OnBeforeGetRecords; JavaScript; XML packets; OnBeforeScroll; Posting record edits; ApplyUpdates; Database update conflicts; Reconcile error dialog; HandleReconcileError; TReconcilePageProducer; MIDAS licensing

Back to top


Delphi Junction: Solution
Authors David Baer Type: Article
Issue 51 : November 1999 View article No source code
Summary The solution to last month's crossword puzzle. See how you got on!
Keywords Delphi Junction crossword; Crossword solutuion

Back to top


Algorithms Alfresco: Re-Make, Re-Model
Authors Julian Bucknall Type: Article
Issue 51 : November 1999 View article View source code
Summary Julian Bucknall investigates Delphi's floating point support, with the full low-down on which floating point types to use, warnings on their limits of accuracy, and tips on how to dramatically improve the efficiency of your floating point calculations
Keywords Algorithms Alfresco; Floating point variables; Floating point types; Efficiency and optimisation; real type; single type; double type; extended type; comp type; IEEE floating point types; FPU hardware; Floating point numbers; Floating point inaccuracy; Mantissa and Exponent; Exponent bias; Not a number; Typecast single as longint; absolute qualifier; Floating point optimisation; Optimization; Aligning doubles; Align to word boundary; Trunc and Round; Constant folding

Back to top


The Observer Pattern
Authors Peter Hinrichsen Type: Article
Issue 51 : November 1999 View article View source code
Summary Peter Hinrichsen has more advice on making the most of design patterns in Delphi. This time round, he elucidates the observer pattern, whose intent is (to quote the Gang of Four): 'to define a one-to-many dependency between objects so that when one object changes state, all its dependants are notified and updated automatically'. Lots of practical real-world stuff here
Keywords Observer pattern; Design patterns; Software design; Code reuse; Application framework; Object Oriented design; Business object model; UML; Singleton pattern; Push and pull observers

Back to top


COM Corner: Efficient Variants
Authors Steve Teixeira Type: Article
Issue 51 : November 1999 View article View source code
Summary Steve Teixeira has been feeling sorry for the poor neglected Variant type. He feels it's got a bad press as being an inefficient way to do Automation. To set things straight he's come up with a great way to get efficient Variants, through the use of dispid caching. The result? Significant speed improvements.
Keywords COM Corner; Efficient variants; Automation; COM programming; Variant type; Early and late binding; Interface and dispinterface; ID binding; IDispatch.Invoke; GetIDsOfNames; Caching Dispids; Cache; VarDispInvoke; VarDispProc; Optimisation

Back to top


File I/O Error
Authors Brian Long Type: Clinic
Issue 51 : November 1999 View article View source code
Summary File I/O Error
Keywords File i/o errors; Error 32; EInOutError.ErrorCode; ERROR_SHARING_VIOLATION; Error codes; SysErrorMessage

Back to top


Type Library Corner Cutting
Authors Brian Long Type: Clinic
Issue 51 : November 1999 View article View source code
Summary Type Library Corner Cutting
Keywords Type library corner cutting; Using type library; Registering a type library; Type library editor

Back to top


Customised Docking
Authors Brian Long Type: Clinic
Issue 51 : November 1999 View article View source code
Summary Customised Docking
Keywords Customised docking; ManualDock; UseDockManager; Grabber lines; TDockTree; AdjustDockRect; PaintDockFrame

Back to top


CreateProcess Alert
Authors Brian Long Type: Clinic
Issue 51 : November 1999 View article View source code
Summary CreateProcess Alert
Keywords CreateProcess resource leak; TProcessInformation; Reference counting; ShellExecuteEx; Launching an application; Run external program

Back to top


Data-Aware HTML Controls, 2
Authors Steve Troxell Type: Article
Issue 52 : December 1999 View article View source code
Summary Steve Troxell concludes his two-part article on data-aware HTML controls: a neat and easy way to generate web pages with content driven from databases, using markup codes in HTML pages, so website designers with no programming or database skills can easily create database-driven websites.
Keywords Web, internet; HTML; Active web pages; CGI applications; Web applications; Markup language engine; Data-driven web pages; Dynamic websites; XML parser; Data-aware HTML; Database; JavaScript; HTTP; COM object

Back to top


Under Construction: Delphi 5 InternetExpress, 3
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 52 : December 1999 View article No source code
Summary Bob Swart continues his coverage of Delphi 5's InternetExpress, which combines WebBroker and MIDAS technologies, producing HTML and XML for ultra-thin clients.
Keywords Under Construction; Delphi 5 InternetExpress; Web applications; Internet applications; World wide web; WebBroker, MIDAS, XML; HTML; Web Editor components; Custom components; Debugging InternetExpress; Master-detail relations; XMLBroker; Data-driven web apps; TADOTable; ADO; TADOConnection; Custom InternetExpress; MidasPageProducer; Missing data provider; XMLDataSetField bug; IntraBob 5.0; Web application debugging; ISAPI debugging; MIDAS licensing

Back to top


TRichEdits And Embedded Objects
Authors Brian Long Type: Article
Issue 52 : December 1999 View article View source code
Summary Brian Long demonstrates how the standard Windows rich edit control, encapsulated in Delphi's TRichEdit component, can be used to display bitmaps through the wonders of OLE.
Keywords TRichEdit; Embedding objects; Graphics in TRichEdits; Rich text; Bitmaps in rich text; OLE objects; IRichEditOLECallback; em_SetOleCallback; safecall and stdcall; TInterfacedObject; CreateIBytesOnHGlobal; StgCreateDocfileOnILockBytes; IStorage; IOleInPlaceFrame; OleCtnrs unit; TOleInPlaceFrameInfo; IVCLFrameForm; GetVCLFrameForm; OleFormObject; In-place editing; Editing OLE object

Back to top


Beating the System: Taming The File System, 2
Authors Dave Jewell Type: Article
Issue 52 : December 1999 View article View source code
Summary Dave Jewell continues development of his own Delphi encapsulation of the file system: easy to use, deploy and extend in any way you like! This month he covers folder navigation, tree walking and more.
Keywords Beating the System; File system class; Directory navigation; Folders and directories; Encapsulate file system; Relative pathnames; Check if directory exists; How to use FileClose; FileCtrl unit; Scanning directories; Walk directory tree; FindFirst and FindNext; faDirectory attribute; Archive attribute; Total size of directory tree; Sum file sizes

Back to top


ADO Transaction Processing
Authors Guy Smith-Ferrier Type: Article
Issue 52 : December 1999 View article View source code
Summary Guy Smith-Ferrier unravels the intricacies of using ADO for transaction processing: comparing it to the Borland Database Engine's transaction support and covering topics such as nested transactions, cursors, transaction isolation levels and more.
Keywords ADO transaction processing; ActiveX Data Objects; Database applications; TADOConnection; TDatabase for BDE; IDAPI; Transaction DDL property; Data definition language DDL; DML; Nested transactions; Fake nesting SQL Server 6.5; TXactAttributes; xaCommitRetaining; xaAbortRetaining; ADO datasets; Inner and outer transactions; Cursor types; Cursor locations; Lock types; CursorLocation; Client-side cursor; Server-side cursor; Client Cursor Library; CursorType; Transaction isolation; ilCursorStability; Dirty reads; Non-repeatable reads; Phantoms

Back to top


Algorithms Alfresco: Hark the Herald Angels Sing
Authors Julian Bucknall Type: Article
Issue 52 : December 1999 View article View source code
Summary Julian Bucknall had a shock when flying back home to Colorado from DCon 99. He shares the results of a conversation with a strange bearded red-suited gentleman with us here, covering juicy little tidbits like bitsets, spell checkers, Soundex, long string gotchas and more.
Keywords Algorithms Alfresco; Unique list of numbers; TList; Bit set, Bitset; Setting bits; Bitsets in database queying; Bitsets as indices, indexes; Long strings; Reference counting; Store long strings in TList; Pointers; How long strings work; Copy on write semantics; Typecasting; Random selection; Select 10 items from 100; Spell checker; Spelling check; Phonetic, Soundex; Sounds like; Phonetic dictionary; Hash tables; Binary search; ELF hash function

Back to top


Serving Up The Registry
Authors David Baer Type: Article
Issue 52 : December 1999 View article View source code
Summary David Baer develops an easy-to-use Windows registry component, with insights into the registry and into component development. Features include easy saving and restoring of form size and location and, of course, minimal coding.
Keywords Windows registry; Registry component; Registry access; TRegistry; Registry keys; Stoing form size, location; File history lists; Simple hex file viewer; Hexadecimal; Saving form location; Using TCollection; Aggregate properties; TCollectionItem

Back to top


One Last Compile...
Authors Type: Article
Issue 52 : December 1999 View article No source code
Summary Nothing was stirring, not even a wheely-mouse.
Keywords One Last Compile...

Back to top


COM Corner: An Introduction to COM+
Authors Steve Teixeira Type: Article
Issue 52 : December 1999 View article No source code
Summary Steve Teixeira brings us a foretaste of how COM will look in Windows 2000.
Keywords COM Corner; COM programming; COM+ Introduction; COM plus; Windows 2000; OLE 2.0; MTS; MSMQ; Microsoft Transaction Server; Microsoft Message Queue; COM+ services; COM+ transactions; DTC; COM+ security; Role-based security; Just-in-time activation, JIT; SetComplete, SetAbort; IObjectContext; SetDeactivateOnReturn; IContextState; Queued components; Object pooling; IObjectControl.CanBePooled; COM+ events; Connection points model; Per-method-level; Load balancing; In-memory database; TSPM; Registration database, RegDB; Neutral threading model; Thread neutral apartment TNA; Microsoft Management Console; MMC

Back to top


TWebBrowser Documentation Problem
Authors Brian Long Type: Clinic
Issue 52 : December 1999 View article View source code
Summary TWebBrowser Documentation Problem
Keywords TWebBrowser documentation; Postdata; ActiveX Internet Explorer; Create a web browser; Web browser ActiveX; BeforeNavigate2; Variant arrays; Web server application; OleVariant

Back to top


Local Share Requirement
Authors Brian Long Type: Clinic
Issue 52 : December 1999 View article View source code
Summary Local Share Requirement
Keywords Set Local Share in code; BDE; Paradox file corruption; Local Share and Paradox

Back to top


Computer Picker
Authors Brian Long Type: Clinic
Issue 52 : December 1999 View article View source code
Summary Computer Picker
Keywords Select computer on network; Computer name; Browse computer name; TDCOMConnection; DCOM; TSocketConnection; TComputerNameProperty; SHBrowseForFolder

Back to top


Form Painting Puzzle
Authors Brian Long Type: Clinic
Issue 52 : December 1999 View article View source code
Summary Form Painting Puzzle
Keywords Form painting; Event handlers; Application.ProcessMessages; Windows messages; Message handling; ProcessMessage; Message queue

Back to top


Dual Processor Woes
Authors Brian Long Type: Clinic
Issue 52 : December 1999 View article View source code
Summary Dual Processor Woes
Keywords Dual processor problems; Symmetric Multi-Processing; SMP; Multiple processors; Threading; String reference counting; Threading bugs; Debugging threading; Threading model

Back to top


What? More Easter Eggs?
Authors Brian Long Type: Clinic
Issue 52 : December 1999 View article View source code
Summary What? More Easter Eggs?
Keywords Easter Eggs in Delphi 5; Easter Eggs in C++Builder 4

Back to top


Corrections
Authors Brian Long Type: Clinic
Issue 52 : December 1999 View article View source code
Summary Corrections
Keywords TCustomLabel correction; Hyperlink label correction; Daylight savings correction

Back to top


Data Modules: Friend Or Foe?
Authors Guy Smith-Ferrier Type: Article
Issue 53 : January 2000 View article View source code
Summary Guy Smith-Ferrier starts an occasional series of articles designed to address some more basic issues that maybe we all ought to know about but which somehow slipped through the net... This month, he discusses the pros and cons of Data Modules, along with common problems (and solutions!).
Keywords Data modules; Database applications; Data module problems; Reusing data modules; MDI applications; Updating record pointers; Multiple data modules; AddDataModule; TDataModule; RemoveDataModule; Data module name; Chained data modules; Data modules in IDE; Unknown database error; Business logic; Reusing business rules

Back to top


Algorithms Alfresco: Midnight Run
Authors Julian Bucknall Type: Article
Issue 53 : January 2000 View article View source code
Summary Julian Bucknall shows us how to go about solving unsolvable problems, using simulated annealing. Along the way he covers two classic computer science problems: the travelling salesman and the knapsack.
Keywords Algorithms Alfresco; NP-complete problems; Simulated annealing; Polynomial time; Knapsack problem; Travelling salesman problem; Intractable problems; Unsolvable problems; Boltzmann distribution; Probability; Find highest hill

Back to top


A Delphi Multicaster Class
Authors Max Rahder Type: Article
Issue 53 : January 2000 View article View source code
Summary A multicaster allows many objects to listen for and detect events. Max Rahder presents a Delphi implementation of a multicaster class.
Keywords Multicaster class; Listen for events; Detect events; Event handling; Singlecaster; Multiple event handlers; Event notification; Method references; Broadcasting

Back to top


Under Construction: Delphi 5 WebBroker Stuff
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 53 : January 2000 View article View source code
Summary Bob Swart discusses the enhancements made to the WebBroker framework in Delphi 5, with a very handy utility to implement and log rotating advertising banners on your website.
Keywords Under Construction; WebBroker; Delphi 5; InternetExpress components; Web modules; HTTPApp unit changes; WebBroker unit; WebBroker problems; DB Web App Wizard; Rotating banners; Advertising banners; Bitmap image; Internet applications; Web applications; Internet ContentType; HTML; CGI, ISAPI; image/gif ContentType; Website redirection; MidasPageProducer; HTML editor; Checkbox component; WebDispatcher bug; WebBroker Delphi 5 bugs

Back to top


The Observer Pattern Observed
Authors Tomasz Stanczak Type: Article
Issue 53 : January 2000 View article View source code
Summary Tomasz Stanczak has more insights into the observer pattern, based on experience with a large and complex real-life project.
Keywords Obrserver pattern; Design patterns; Push and pull models

Back to top


One Last Compile...
Authors Type: Article
Issue 53 : January 2000 View article No source code
Summary Used and Abused
Keywords One Last Compile

Back to top


Beating the System: Windows 2000, Are You Getting Certified?
Authors Dave Jewell Type: Article
Issue 53 : January 2000 View article No source code
Summary Dave Jewell gives us the low-down on what we need to know about for Windows 2000 from a software development perspective.
Keywords Beating the System; Windows 2000 API; Windows 2000 certification; Windows installer; MSI; Windows 2000 logo; Application migration; Registry; Migration DLL; MEI; Migration Extension; System File Protection SFP; PROTECTED_FILE_DATA; SfcIsFileProtected; OnNow and ACPI; Power management; SetThreadExecutionState; Operating systems

Back to top


XML in Delphi, 3
Authors David Baer Type: Article
Issue 53 : January 2000 View article View source code
Summary David Baer is back with Part 3 of his popular series on using XML in Delphi.
Keywords XML; XML class framework; Document Object Model DOM; DOM node type; MSXML DLL; Document fragment node type; XML data type conversions; ISO date and time; XML Data; XML patterns; Pattern specification MSXML; Extensible Stylesheet XSL; Pattern selection

Back to top


COM Corner: CoPourri
Authors Steve Teixeira Type: Article
Issue 53 : January 2000 View article View source code
Summary This month, Steve Teixeira has answers to a selection of readers' questions on common COM programming problems.
Keywords COM Corner; COM programming; Readers' questions; Is component in design mode; Is component in runtime mode; Design-time or runtime; ActiveX; IOleClientSite; IOleObject.GetClientSite; IAmbientDispatch; AxCtrls unit; UserMode for ActiveX; UserMode limitations; Multiple IDispatch interface; Early and late binding; Running Object Table ROT; GetActiveObject; RegisterClassObject; Registering with ROT

Back to top


Update: Safecall Defined
Authors Brian Long Type: Article
Issue 53 : January 2000 View article No source code
Summary Brian Long has more information on the safecall directive.
Keywords Update on safecall defined; Safecall directive; HResult return code; EOleSysError

Back to top


QuickReport And Printers
Authors Brian Long Type: Clinic
Issue 53 : January 2000 View article View source code
Summary QuickReport And Printers
Keywords QuickReport and printers; Selecting printer; TQuickRep.PrinterSettings; PrinterIndex

Back to top


File Copying
Authors Brian Long Type: Clinic
Issue 53 : January 2000 View article View source code
Summary File Copying
Keywords File copying; CopyFile; FMXUtils unit; File copy using streams; File copy animation dialog; Animated progress dialog; Select directory; SHBrowseForFolder; SHFILEOPSTRUCT; SHFileOperation; CopyFileEx; Callbacks

Back to top


ActiveX Warning
Authors Brian Long Type: Clinic
Issue 53 : January 2000 View article View source code
Summary ActiveX Warning
Keywords ActiveX security warning; Using ActiveX control on web; Signed ActiveX; InternetExplorer; Code signing; Authenticode; Verisign and GTE

Back to top


Custom Error Strings From DLL Routines
Authors Brian Long Type: Clinic
Issue 53 : January 2000 View article View source code
Summary Custom Error Strings From DLL Routines
Keywords Custom error strings in DLLs; Writing DLLs; GetLastError, SetLastError; SysErrorMessage; RaiseLastWin32Error; EWin32Error; Win32Check; Message-table resource; Resource DLL; Message Compiler utility; Message-table in DLL

Back to top


Update To File I/O Error
Authors Brian Long Type: Clinic
Issue 53 : January 2000 View article View source code
Summary Update To File I/O Error
Keywords Update to file i/o error; Windows error codes; Net help command

Back to top


ADO Batch Updates
Authors Guy Smith-Ferrier Type: Article
Issue 54 : February 2000 View article View source code
Summary Guy Smith-Ferrier shows how ADO's batch updates compare to the BDE's capabilities, explaining how to use batch updates and how they form a pre-requisite for disconnected recordsets, single tier applications and Remote Data Services.
Keywords ADO batch updates; BDE cached updates; BDE TClientDataset; Disconnected recordsets; Single tier applications; Remote Data Services; ADOExpress; TADODataset; UpdateBatch; LockType; ltBatchOptimistic lock type; CancelUpdates; CancelBatch; UpdateStatus; FilterGroup; Database update conflicts; upWhereChanged; Simultaneous updates; ADO Errors occurred; OnRecordChangeComplete; ADO master/detail; Data Shape Provider; ADO Auto-increment fields; Auto incremented; Access AutoNumber

Back to top


Algorithms Alfresco: Private Eyes
Authors Julian Bucknall Type: Article
Issue 54 : February 2000 View article View source code
Summary So you want to be a spy? Julian Bucknall introduces encryption, its background and terminology, and then describes some of the classic encryption techniques.
Keywords Algorithms Alfresco; Encryption; Cryptography; Cipher; Decryption; Plaintext and Ciphertext; Key or password; DES data encryption standard; Public key; Digital signature; Signed packages; Verisign; Cryptanalyst; Cryptanalysis; Substitution cipher; Caesar cipher; ROT13 cipher, Unix; Mono-alphabetic cipher; Vigenere cipher; Polyalphabetic substitution; Giovan Batista Belaso; XOR cipher; Windows CE ActiveSync; One time pad (one-time); Transposition cipher; ADFGVX cipher; ENIGMA machine; Rotor machine; Bletchley Park; Alan Turing; The Bombe

Back to top


Under Construction: VisiBroker for Delphi 5
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 54 : February 2000 View article View source code
Summary Bob Swart discusses VisiBroker for Delphi 5.
Keywords Under Construction; Visibroker for Delphi 5; CORBA; IDL; Type Library; IDL2Pas; Convert IDL to Pascal; Dynamic interface invocation; DII; Interface Repository; CORBA exceptions

Back to top


Beating the System: Taming The File System, 3
Authors Dave Jewell Type: Article
Issue 54 : February 2000 View article View source code
Summary Dave Jewell continues building his Windows file system object, this month adding in support for file change notifications before calling it a day (for now).
Keywords Beating the System; File system object; File system classes; Waking directory tree; FindNext infinite loop; FindFirst; File change notifications; ShChangeNotify; FindFirstChangeNotification; WM_FILESYSCHANGE; WaitForSingleObject; Notification of file change; WaitForMultipleObject; Threads; ReadDirectoryChangesW

Back to top


One Last Compile...
Authors Type: Article
Issue 54 : February 2000 View article No source code
Summary Cubes not quite to the rescue.
Keywords One last compile

Back to top


Patterns And Persistence
Authors Peter Hinrichsen Type: Article
Issue 54 : February 2000 View article View source code
Summary Peter Hinrichsen uses the visitor pattern to build a persistent framework for database applications without any data-aware controls, providing more power and flexibility than the BDE, with true database independence.
Keywords Design patterns; Persistence framework; Data aware controls; Data-aware; Problems with data aware; Visitor pattern; Database applications; Business objects; Database engine independence; Iterator pattern; Factory pattern; SQL; Visitor manager pattern; Persistent objects; Database independence

Back to top


COM Corner: COM+ Events
Authors Steve Teixeira Type: Article
Issue 54 : February 2000 View article View source code
Summary Steve Teixeira explains how events work in COM+, part of this month's release of Windows 2000, with its loosely coupled events model, and what this means for our own COM apps.
Keywords COM Corner; COM+ events; Connection points; Polling versus events; Tightly coupled event system; Loosely coupled event system; TCE and LCE; Publishers and subscribers; Windows 2000; Event class server; Event filters; Subscriber server

Back to top


Watching TDateTime Values
Authors Brian Long Type: Clinic
Issue 54 : February 2000 View article View source code
Summary Watching TDateTime Values
Keywords TDAteTime debugging; TDateTime in watch list; Debugger; Watched variables

Back to top


Executable File Differences
Authors Brian Long Type: Clinic
Issue 54 : February 2000 View article View source code
Summary Executable File Differences
Keywords Executable file differences; Executable timestamp; Date/time stamps; Compiler created timestamps; TDump utility

Back to top


Common Control Library Version Mismatch
Authors Brian Long Type: Clinic
Issue 54 : February 2000 View article View source code
Summary Common Control Library Version Mismatch
Keywords Common control library; TListView checkboxes; COMCTL32.DLL

Back to top


Dynamic Array Question
Authors Brian Long Type: Clinic
Issue 54 : February 2000 View article View source code
Summary Dynamic Array Question
Keywords Dynamic arrays; Initialising dynamic arrays; FillChar

Back to top


TImage.OnProgress Broken?
Authors Brian Long Type: Clinic
Issue 54 : February 2000 View article View source code
Summary TImage.OnProgress Broken?
Keywords TImage.OnProgress; Progress bar; Image load progress

Back to top


Custom Grid Drawing
Authors Brian Long Type: Clinic
Issue 54 : February 2000 View article View source code
Summary Custom Grid Drawing
Keywords Custom grid drawing; Colouring a row in TDBGrid; OnDrawDataCell; DefaultDrawing; Customising grid display; Customising rows and columns; OnDrawColumnCell

Back to top


Splat: Sound And Graphics With Delphi
Authors Ray Lischner Type: Article
Issue 55 : March 2000 View article View source code
Summary Ray Lischner provides an excellent tutorial on using sounds and graphics in Delphi, with a handy application your pre-school kids will just love!
Keywords Sound and Graphics; Multimedia; Drawing shapes; Playing sounds; Keyboard and mouse events; Double buffered graphics; TImage; TApplicationEvents; Keyboard handling; WAV files, WAVE resources; Sound files; Including resource scripts; .RC files; $R compiler directive; Getting free WAV files; Sound effects; Windows resources; MMSystem.PlaySound; Snd_Async; Snd_Resource; TCanvas; Force window to foreground; Force window to top; IsDebuggerPresent; DebukHook; Recording sounds; Media control interface MCI

Back to top


Under Construction: Internet Security
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 55 : March 2000 View article View source code
Summary Bob Swart has some important advice to help secure your data and your customers' data, covering security layers, firewalls, proxies and SSL. Plus, he has some useful code which allows you to create password-protected areas on websites.
Keywords Under Construction; Internet Security; Firewalls; BlackICE Defender; Proxy server, proxies; httpsrvr.dll; TWebConnection; Secure Sockets Layer SSL; Secure HTTP, S-HTTP; HTTPS; Verisign and Thawte; Password-protected website; Password access; Protected web pages; HTTP headers; MIME-type; HTTP error 401 unauthorized; NPH- non protocol header; CGI applications; DrBobCGI unit; Base64 encoding; Base 64 encoding; WebBroker; InternetExpress; WebModules; TWebRequest.Authorization; WWWAuthenticate; Realm; ActiveX security issues

Back to top


Beating the System: Wrapping The RAS Services API
Authors Dave Jewell Type: Article
Issue 55 : March 2000 View article View source code
Summary Dave Jewell has been delving into the cloudy waters of the Windows Remote Access Services API, which also serves as a timely tutorial on how to wrap an API set as a Delphi object, without getting any unpleasant surprises when moving your code to other platforms, and showing how to fail gracefully if a required API doesn't exist.
Keywords Beating the System; RAS Services API; Remote Access Service; Windows 2000; How to wrap a Windows API; Wrapping an API; API wrappers; Dial-up networking DUN; RASAPI32.DLL; RNAPH.DLL; RAS phonebooks; Dial-up phonebook; Windows NT and RAS; Make New Connection wizard

Back to top


Contain Yourself!
Authors David Baer Type: Article
Issue 55 : March 2000 View article View source code
Summary David Baer investigates the goodies to be found in Delphi 5's new container class unit, plus the enhancements made to TList, and the TInterfaceList introduced in Delphi 4. Finally, David presents a new flexibly-self-sorting container class of his own.
Keywords Container classes Delphi 5; Enhanced TList; TInterfaceList; Self-sorting container class; TList.Extract; raise ... at address; Exception handling; TListNotification; TList.Notify; TList notifications; TList notify bugs; TStringListSortCompare; Sorting a StringList; TStringList.CustomSort; Classes unit; TThreadList; TClassList; TObjectList; TComponentList; Simple stacks and queues; TOrderedList; LIFO and FIFO; TQueue, TObjectQueue; RTTI

Back to top


One Last Compile...
Authors Type: Article
Issue 55 : March 2000 View article No source code
Summary Me, Bill and socks.
Keywords One last compile...

Back to top


Algorithms Alfresco: Happiness Is An Option
Authors Julian Bucknall Type: Article
Issue 55 : March 2000 View article View source code
Summary Julian Bucknall unwraps some common difficulties using multiple threads in your applications, covering critical sections, mutexes, semaphores and events, plus a solution to the readers/writers problem.
Keywords Algorithms Alfresco; Multithreaded programming; Processes, threads; Race condition; Primary thread; Multiprocessor machines; Multiple processors; WaitForSingleObject; WaitForMultipleObjects; Synchronisation objects; Critical sections; EnterCriticalSection; LeaveCriticalSection; TRTLCriticalSection; TryEnterCriticalSection; Deadlock; Signalled handle; Unsignalled handle; Mutex; ReleaseMutex; CreateMutex; OpenMutex; CloseHandle; Semaphore; ReleaseSemaphore; CreateSemaphore; OpenSemaphore; Windows event objects; Win32Event; Auto reset event; Manual reset event; CreateEvent; OpenEvent; SetEvent; ResetEvent; PulseEvent; Readers/Writers problem; LockList and UnlockList; TThreadedList

Back to top


Persistent Fields: Friend Or Foe?
Authors Guy Smith-Ferrier Type: Article
Issue 55 : March 2000 View article View source code
Summary Guy Smith-Ferrier gives us a thorough analysis of both the strengths and weaknesses of persistent fields, dispelling a myth or two along the way, with fresh information from Delphi 5.
Keywords Persistent fields; Fields array of dataset; TField; FieldByName; Fields Editor; Syntax checking; Field properties and events; Data dictionary; Lookup fields; Calculated fields; Aggregate fields; OnCalcFields; SQL Join, equi-join; TTable and TQuery; TDBLookupComboBox; Drag and drop fields; Replacement fields editor; Dataset designer; TBDEDesigner; TCDSDesigner; TClientDataset; TDSDesigner; ADO Express; InterBase Express; Component editors; Type mismatch for field

Back to top


COM Corner: COM+ Queued Components
Authors Steve Teixeira Type: Article
Issue 55 : March 2000 View article View source code
Summary Steve Teixeira outlines COM+ queued components. Included in Windows 2000 Server, and based on Microsoft Message Queue technology, queued components provide a means for COM+ clients to asynchronously invoke methods of COM+ server components. Steve reassures us that things are not as difficult as they sound...
Keywords COM Corner; COM programming; COM+ queued components; Windows 2000; MSMQ; Microsoft message queue; COM+ server; Object briefcase; Recorder, listener, player; Scalability; Load scheduling

Back to top


RTTI And Module Boundaries
Authors Brian Long Type: Clinic
Issue 55 : March 2000 View article View source code
Summary RTTI And Module Boundaries
Keywords RTTI; Module boundaries; Is and as operators; Safe typecasting; reInvalidCast; Virtual method table VMT

Back to top


Object Inspector Refuses To Make Event Handler
Authors Brian Long Type: Clinic
Issue 55 : March 2000 View article View source code
Summary Object Inspector Refuses To Make Event Handler
Keywords Event handlers; Adding event handlers; TMethodProperty; Property editors; DsgnIntf unit

Back to top


TStrings And Object Owners
Authors Brian Long Type: Clinic
Issue 55 : March 2000 View article View source code
Summary TStrings And Object Owners
Keywords TStrings and object owners; TStringList; Object reference; What owns an object?; TStringList.Objects

Back to top


ListView Checkbox Changes
Authors Brian Long Type: Clinic
Issue 55 : March 2000 View article View source code
Summary ListView Checkbox Changes
Keywords ListView checkbox changes; TItemChange; TListView.OnChange; TListItem.Checked; OnChanging; OnSelectItem; CanChange

Back to top


Visual Form Inheritance And Frames: Friend or Foe?
Authors Guy Smith-Ferrier Type: Article
Issue 56 : April 2000 View article View source code
Summary Guy Smith-Ferrier discusses the relative merits of visual form inheritance and frames, explaining how they work, their good and bad points, and recommending how we should use these facilities.
Keywords Visual Form Inheritance VFI; Frames; Repository; Sub-forms; Enter moves between controls; KeyPreview; TComponent.Notification; TComponent.Loaded; csInheritable; VFI drawbacks; ComponentStyle; TNotebook; Frames drawbacks; Form components

Back to top


Beating the System: Wrapping The RAS Services API, Part 2
Authors Dave Jewell Type: Article
Issue 56 : April 2000 View article View source code
Summary Dave Jewell enhances his wrapper for Windows' RAS services, with extra goodies for phonebook manipulation and more
Keywords Beating The System; RAS Services; Phonebooks; Dial-up networking DUN; Windows 2000; Telephone API TAPI; RasGetCountryInfo; Country list dialing codes; Dial parameters; RAS connection manager; Connection notification; WaitForSingleObject; RASConnectionNotification; RASEnumConnections; RASGetConnectStatus

Back to top


Splat: Part 2, Going International
Authors Ray Lischner Type: Article
Issue 56 : April 2000 View article View source code
Summary Ray Lischner continues his useful demonstration of using Delphi's sound and graphics facilities. This month he internationalises the sample application and shows how to compress sound resources to reduce the .EXE's footprint.
Keywords Sound and graphics; Internationalisation; Internationalization; Compressing resources; ZLib compression; Multiple languages; Keystroke handling; Keyboard scan codes; Wndows code page; Virtual key code; Localisation, Localization; resourcestring; Convert numbers and strings; VAL and STR; Resource localization; FindResourceHInstance; Finding resource DLL handle; Recording sounds; Input Locales; Install keyboard layout; Control Panel; Keyboard applet; Unicode; ToUnicode Windows NT; WideString and AnsiString; Unicode TLabel TStaticText; CreateWindowW; Resource DLL Wizard; ELL; Windows metafiles; Drawing shapes; Enhanced metafiles; WAV resources; TCompressionStream; Keyboard state; Extended keys

Back to top


Algorithms Alfresco: Hyperactive
Authors Julian Bucknall Type: Article
Issue 56 : April 2000 View article View source code
Summary Julian Bucknall has more multithreading insights, this time covering producers and consumers, with easy to follow examples to explain it all.
Keywords Algorithms Alfresco; Multithreading; Data Producers and Consumers; Synchronisation objects; Readers and Writers; Semaphore; Queue; Thread-safe; Mutex; InterlockedDecrement

Back to top


One Last Compile...
Authors Type: Article
Issue 56 : April 2000 View article No source code
Summary The name's Delphi. Borland Delphi.
Keywords One last compile...

Back to top


Under Construction: CORBA Exceptions In Delphi
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 56 : April 2000 View article View source code
Summary Bob Swart explains how to handle CORBA-specific exceptions in Delphi using VisiBroker.
Keywords Under Construction; CORBA exceptions; Password access update; HTTP 401 Unauthorized; WebBroker; Internet Explorer 5; WWW-Authenticate update; Catastrophic failure error; CORBA error handling; VisiBroker for Delphi; SystemException; C++Builder exceptions; VisiBroker 3.4 problems; IDL exception definition

Back to top


Dragging And Dropping Part 1: VCL
Authors Brian Long Type: Article
Issue 56 : April 2000 View article View source code
Summary Brian Long begins a thorough discussion of how drag and drop works by running through the VCL's built-in support, with some clever enhancement ideas too
Keywords Dragging and Dropping; Drag and Drop; VCL drag and drop support; Drag source; Drag target, drop target; Controls; cm_Drag message; DragMode; dmAutomatic; dmManual; BeginDrag; Mouse.DragThreshold; Mouse.DragImmediate; Accept dragged object; OnDragDrop; FindDragTarget; CancelDrag

Back to top


COM Corner: COM+ Security
Authors Steve Teixeira Type: Article
Issue 56 : April 2000 View article No source code
Summary Steve Teixeira explains the security features in COM+ and how to put them to use in your own applications.
Keywords COM Corner; COM+ Security; Role-based security; Component Services tool; Windows 2000; COM+ roles; Impersonation levels; Authentication level; DCOMCNFG; CoInitializeSecurity; CoSetProxyBlanket; Multi-tier performance COM+; Programmatic security; Declarative security; IsCallerInRole; IObjectContext

Back to top


Memos And Scroll Bars
Authors Brian Long Type: Clinic
Issue 56 : April 2000 View article View source code
Summary Memos And Scroll Bars
Keywords Memos and scroll bars; Automatic scroll bars TMemo; Scrollbars

Back to top


MIDAS Delta Packets
Authors Brian Long Type: Clinic
Issue 56 : April 2000 View article View source code
Summary MIDAS Delta Packets
Keywords MIDAS Delta packets; TClientDataset.Delta; Dataset changes; MIDAS licence fees; OleVariant; Data packet and delta packet; Reconcile, ApplyUpdates; OnUpdateData

Back to top


Drawing On Status Bars
Authors Brian Long Type: Clinic
Issue 56 : April 2000 View article View source code
Summary Drawing On Status Bars
Keywords Drawing on status bars; Customised status bars; Icons on status bar; Status panels on status bar; TStatusPanel; SimplePanel

Back to top


Accessing Application Icons
Authors Brian Long Type: Clinic
Issue 56 : April 2000 View article View source code
Summary Accessing Application Icons
Keywords Accessing application icons; SHGetFileInfo; SHFILEINFO record; Extract application icon; SHGFI_EXETYPE

Back to top


COM RTL Support
Authors Brian Long Type: Clinic
Issue 56 : April 2000 View article View source code
Summary COM RTL Support
Keywords COM RTL support; ProgID; Connect to Automation object; ClassID; IDispatch; CreateOleObject; GetActiveOleObject; Windows Running Object Table; ROT; OleCheck

Back to top


Object Assignment
Authors Brian Long Type: Clinic
Issue 56 : April 2000 View article View source code
Summary Object Assignment
Keywords Object assignment; Copying or assigning objects; Pointers; Object references; AssignTo

Back to top


Object Property Assignment
Authors Brian Long Type: Clinic
Issue 56 : April 2000 View article View source code
Summary Object Property Assignment
Keywords Object property assignment; Property assign or copy?

Back to top


Dragging And Dropping Part 2: Enhanced VCL
Authors Brian Long Type: Article
Issue 57 : May 2000 View article View source code
Summary Brian Long continues his in-depth examination of drag and drop in Delphi applications. This month he moves on to custom drag objects.
Keywords Drag and drop; Enhancing VCL drag and drop; Custom drag objects; Drag control objects; Complex OnDragOver; Complex OnDragDrop; TDragObject; TDragControlObject; Drag and dock; OnStartDrag; OnDragOver; OnDragDrop; IsDragObject; Custom drag cursor; GetDragCursor; GetDragImages; Merge image with drag cursor; crDrag and crNoDrop; Drag image list; ControlStyle problem; csDisplayDragImage; TDragImageList; Dragging and DLLs; Forms in DLLs; Drag and drop and DLLs

Back to top


Correction: ADO Batch Updates
Authors Guy Smith-Ferrier Type: Article
Issue 57 : May 2000 View article No source code
Summary Guy Smith-Ferrier has some updated information concerning his article in Issue 54 (February 2000).
Keywords ADO Batch Update correction; Issue 54 February 2000; BDE TUpdateMode; upWhereChanged; ADCPROP_UPDATECRITERIA_ENUM; Update Criteria; MDAC SDK 2.1

Back to top


Beating the System: Alpha Blending In Windows 2000
Authors Dave Jewell Type: Article
Issue 57 : May 2000 View article View source code
Summary Dave Jewell has a flash of deja vu from the days of EGA video cards... and unveils the secrets of creating cute translucent effects in Windows 2000.
Keywords Beating the System; Alpha blending; Windows 2000; Translucent windows; Transparent or translucent; SetWindowRGN; Apparent translucency; Non-rectangular windows; Layering; Window buffering; Flicker; Animation and layering; WS_EX_LAYERED; CreateParams; Window style bits; GetWindowLong; SetWindowLong; SetLayeredWindowAttributes; dwFlags; lwa_ColorKey; lwa_Alpha; bAlpha opactity level; crKey; Transparency by colour; Transparent colour; Shadowed windows; Window shadows; wm_WindowPosChanged; AnimateWindow; AW_HOR_POSITIVE; AW_VER_POSITIVE; Sliding windows; SystemParametersInfo; SPI_GetMenuAnimation; SPI_GetMenuFade; Animated menus; Sliding menus; Fading menus; UpdateLayeredWindow; Shrinker: problems?; Executable compressors; EXE compression

Back to top


Life Without Data-Aware Controls
Authors Philip Brown Type: Article
Issue 57 : May 2000 View article View source code
Summary What's this? Heresy or the way we should all be working? Philip Brown presents the case for doing away with data-aware controls in our database applications, along with some ideas on how we can make life bearable without them.
Keywords Data-aware controls; Data aware controls; No data-aware controls; Data-aware disadvantages; Decoupling; Separate logic and interface; Business rules; Application design; Application architecture; Visually representing sets; Data-aware grid problems; Transaction performance; Property sheets; Visual form inheritance; TTabSheet for Master-Detail; Grid versus ListView; Populating a ListView; BeginUpdate and EndUpdate

Back to top


Under Construction: Delphi 5 And MIDAS 3
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 57 : May 2000 View article View source code
Summary Bob Swart discusses the new things to be found in MIDAS 3, including stateless remote data modules. He covers deployment issues and describes the best way to migrate your MIDAS 2 applications over to MIDAS 3. With the new (much) lower licence cost, MIDAS could now see far wider use by Delphi developers.
Keywords Under Construction; MIDAS 3 and Delphi 5; Multi-tier applications; N-tier; Instancing and threading; Visual data module designer; MIDAS UpdateRegistry; TDataSetProvider; IProviderSupport; IAppServer; MIDAS server; Upgrade MIDAS 2 to MIDAS 3; SocketConnection; Socket Servers; NT Service; Stateless remote data module; Shared remote data modules; XMLBroker; GetXMLRecords; Maintaining state; Deploying MIDAS; MIDAS licensing

Back to top


Effective Delphi Class Engineering 1: Crossing The Chasm
Authors David Baer Type: Article
Issue 57 : May 2000 View article No source code
Summary David Baer kicks off a new series of articles aimed at all of us who are reluctant, confused or ill-informed on what object-oriented development is all about. The goal is to demonstrate, clearly and without jargon-loaded obfuscation, how to design, create and use Delphi classes to make your development more productive.
Keywords Delphi class engineering; Object oriented development; Class, component, object; Class design; VCL; Components or controls; Encapsulation; Inheritance; Polymorphism; Class member visibility; Private; Published; Protected; Public; Methods; OO design methods; Refactoring

Back to top


Algorithms Alfresco: Push The Limits
Authors Julian Bucknall Type: Article
Issue 57 : May 2000 View article View source code
Summary Julian Bucknall has a collection of useful tips and tricks to give your applications that high performance edge.
Keywords Algorithms Alfresco; Performance and optimisation; Optimization; Profilers; GetTickCount; Big-O notation (Big-Oh)); Sequential search; Binary search; Time efficiency; Space efficiency; Space/time trade-off; Long strings; String search and replace

Back to top


Resolve That Date!
Authors Martin Lanza Type: Article
Issue 57 : May 2000 View article View source code
Summary Martin Lanza presents a handy routine to convert dates in just about any commonly used string format to Delphi's own TDateTime.
Keywords Converting dates; Date in string format; TDateTime; Date string to TDateTime; StrToDate; Visual Basic DateValue

Back to top


One Last Compile...
Authors Type: Article
Issue 57 : May 2000 View article No source code
Summary Into the IUnknown
Keywords One last compile

Back to top


Where Is My Documents?
Authors Brian Long Type: Clinic
Issue 57 : May 2000 View article View source code
Summary Where Is My Documents?
Keywords My Documents folder; Shell API; Finding My Documents; SHGetSpecialFolderLocation; SHGetPathFromIDList; CSISDL_PERSONAL

Back to top


Getting UNC File Names
Authors Brian Long Type: Clinic
Issue 57 : May 2000 View article View source code
Summary Getting UNC File Names
Keywords Getting UNC filenames; Translate filename to UNC; ExpandUNCFilename; GetComputerName

Back to top


Adding Tool Buttons
Authors Brian Long Type: Clinic
Issue 57 : May 2000 View article View source code
Summary Adding Tool Buttons
Keywords Add button to TToolBar; SetToolBar; Customising a toolbar; TToolButton

Back to top


Modifying The VCL Source
Authors Brian Long Type: Clinic
Issue 57 : May 2000 View article View source code
Summary Modifying The VCL Source
Keywords TMaskEdit bug; Modifying VCL source; Recompiling the VCL

Back to top


COM Terminology Problem
Authors Brian Long Type: Clinic
Issue 57 : May 2000 View article View source code
Summary COM Terminology Problem
Keywords TClientDataset; DBCLIENT.DLL; In-process COM servers; DLLs and COM servers

Back to top


Adding ActiveX/ ActiveForm Properties
Authors Brian Long Type: Clinic
Issue 57 : May 2000 View article View source code
Summary Adding ActiveX/ ActiveForm Properties
Keywords Add properties to ActiveX; Add properties to ActiveForm; TActiveXControl; TActiveXControlFactory; TActiveFormFactory; ActiveXControlClass; WinControlClass; TActiveXFormControl; IPersistPropertyBag; IPersistStreamInit; IPersistStorage

Back to top


Unhelpful Panel
Authors Brian Long Type: Clinic
Issue 57 : May 2000 View article View source code
Summary Unhelpful Panel
Keywords Unhelpful panel; Panel HelpContext; WS_CLIPCHILDREN; WS_EX_CONTROLPARENT; Container control problems; Help for panels

Back to top


Corrections
Authors Brian Long Type: Clinic
Issue 57 : May 2000 View article View source code
Summary Corrections
Keywords Clinic Corrections; Issue 47 July 1999; $Hints directive; Issue 53; Authenticode

Back to top


Easy Web Controls
Authors Paul Warren Type: Article
Issue 58 : June 2000 View article View source code
Summary Paul Warren has a really neat and easy way to generate and use visual web controls such as a calendar and charts in your web applications.
Keywords Easy web controls; World wide web www; Web applications; Internet; WebModule; Visual components in web app; Web app calendar; Visual component WebModule; Control wrapper; Response.ContentStream; TWinControl.PaintTo; Copy control to bitmap; Bitmap image of control; Printing a component; GetContentAsStream; Calendar component; Rotatable label; IntersectClipRect; Web chart control; WebBroker; TPageProducer

Back to top


Under Construction: Delphi 5 Active Server Objects
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 58 : June 2000 View article View source code
Summary Bob Swart describes how easy it is to create and use Active Server Objects in Delphi 5 that can be used in web (or intranet) pages created using Microsoft's Active Server Pages scripting language.
Keywords Under Construction; Active Server Objects; Writing ASP objects; Server-side scripting; Web applications; World wide web www; ASP scripting; ASP Object wizard; ActiveX library; CoClass Name; Instancing and threading; Page-level event methods; Object context and MTS; ASP Request; ASP Response; ASP Session; Type library; ciMultiInstance; ciSingleInstance; Deploying ASP Objects; Script, Execute attributes; IIS 4.0; ASP session information; ASP, CGI and ISAPI; State management; Cookies; ASP.DLL; Debugging ASP objects

Back to top


ADOX Extensions For DDL And Security
Authors Guy Smith-Ferrier Type: Article
Issue 58 : June 2000 View article View source code
Summary Guy Smith-Ferrier returns to ADO this month to explain how to use ADOX: an additional set of interfaces for ADO that allow us to handle the creation, maintenance and security of databases from our applications.
Keywords ADOX extensions to ADO; ADO security and DDO; SQL DDO and DCL; Database maintenance; Database security; Database creation; Data manipulation language; MDAC; ADOX type library; MSADOX.DLL; ADOX Catalog; Get_ActiveConnection; Set_ActiveConnection; CoCatalog; Create database ADO; Delete database ADO; _NewENum, IENumVariant; axPropWrite; Create table ADO; Autoincrement in ADO; Auto increment field; ParentCatalog; OLE DB providers; GetPermissions; SetPermissions

Back to top


Beating The System: Groovy Group Boxes
Authors Dave Jewell Type: Article
Issue 58 : June 2000 View article View source code
Summary Dave Jewell creates an enhanced group box control which automatically enables and disables the child controls within it, ridding us of the burden of extra programming to grey-out and un-grey child controls each and every time. And Dave's control has more clever swings and bells too!
Keywords Beating the System; Enhanced group box component; Disabled group box; Group box child controls; Disable child controls; Greying-out child controls; TGroupBox; Group box caption; Group box border; Rotated caption; TrueType fonts; Caption background; Graduated fill; CreateFontIndirect

Back to top


One Last Compile...
Authors Type: Article
Issue 58 : June 2000 View article No source code
Summary We should be so lucky, lucky, lucky, lucky.
Keywords One last compile

Back to top


Dragging And Dropping Part 3: Windows
Authors Brian Long Type: Article
Issue 58 : June 2000 View article View source code
Summary Brian Long has the third part of his in-depth examination of drag and drop in Delphi applications, describing inter-application drag and drop using the Windows API. In particular Brian shows how to make your Delphi application act as a recipient for information dragged from other Windows applications.
Keywords Drag and drop; Inter-application; Receiving dragged data; Windows 3 drag and drop; DragAcceptFiles; wm_DropFiles; WParam, LParam; Drop structure; DROPFILES structure; DragQueryPoint; DragQueryFile; DragFinish; OleInitialize; OleUninitialize; RegisterDragDrop; RevokeDragDrop; IDropTarget; DragEnter; grfKeyState; DragOver; IDataObject; DragLeave; IAdviseSink; Drag and drop data formats; Drag and drop and clipboard; Woozle data format; FORMATETC, TFormatEtc; EnumFormatEtc; TClipFormat; Delphi 3 drag and drop; VCLComObject; Drag and drop storage medium; STGMEDIUM, TStgMedium; ReleaseStgMedium; GetDataAsText; Drag and drop data as text; CF_TEXT; GetDataAsRtf; Drag and drop data as RTF; CF_RTF; IRichEditOle; EM_GETOLEINTERFACE; CF_HDROP file list; CF_BITMAP, CF_PALETTE; Graphics unit; LoadFromClipboardFormat; CF_DIB; TBitMapFileHeader; CF_ENHMETAFILE; CopyEnhMetaFile; CF_METAFILEPICT; WMF files drag and drop; TMetaFilePict; GetMetaFileBitsEx; SetWinMetaFileBits; Get size of metafile; Drag and drop between apps; COM drag and drop

Back to top


Algorithms Alfresco: Strictly Confidential
Authors Julian Bucknall Type: Article
Issue 58 : June 2000 View article View source code
Summary Julian Bucknall unravels the complexities of Data Encryption Standard (DES) encryption, showing how this widely-used private key encryption algorithm works and providing code to plug in and use.
Keywords Algorithms Alfresco; Cryptography; DES encryption; Private key encryption; Symmetric encryption; Security; Data encryption standard; NSB, NIST; IBM Lucifer project; S-boxes; DES trapdoor; Advanced Encryption Standard; AES encryption; Block cypher; Brute force attack; DES encryption broken; E-boxes, S-boxes, P-boxes; Ciphertext stealing; Electronic codebook mode; ECB; Cipher block chaining mode; CBC; Weak keys, semi-weak keys; Triple-DES; DES-EEE3, DES-EDE3

Back to top


COM Corner: More Callbacks
Authors Steve Teixeira Type: Article
Issue 58 : June 2000 View article No source code
Summary Steve Teixeira shows how to perform a simple interface-based callback from a COM server to a client.
Keywords COM callbacks; COM Corner; COM programming; RPC_E_WRONG_THREAD; COM proxies; Apartments; Data marshalling; CoMarshalInterThread...; CoInitializeEx

Back to top


Strings And Streams
Authors Brian Long Type: Clinic
Issue 58 : June 2000 View article View source code
Summary Strings And Streams
Keywords Strings and streams; TFileStream and text file

Back to top


Optimised Working Set
Authors Brian Long Type: Clinic
Issue 58 : June 2000 View article View source code
Summary Optimised Working Set
Keywords Optimised working set; SetProcessWorkingSetSize; Minimise memory use; Windows NT

Back to top


Copying Selected Text Between TRichEdit Controls
Authors Brian Long Type: Clinic
Issue 58 : June 2000 View article View source code
Summary Copying Selected Text Between TRichEdit Controls
Keywords Copy between richedits; TRichEdit; Copying RTF text; Copying formatted text; IRichEditOleCallback; EM_SETOLECALLBACK; IRichEditOle; EM_GETOLEINTERFACE; GetClipboardData; ImportDataObject; IDataObject

Back to top


Rich Text To Microsoft Word
Authors Brian Long Type: Clinic
Issue 58 : June 2000 View article View source code
Summary Rich Text To Microsoft Word
Keywords Copy formatted text to Word; Copy RTF text to Word; TRichEdit to Word; OleIsCurrentClipboard

Back to top


API problem
Authors Brian Long Type: Clinic
Issue 58 : June 2000 View article View source code
Summary API problem
Keywords WaitForSingleObject; Process handle signalled; Calling Microsoft Paint; Calling Windows Explorer; File access monitor; Pbrush.exe and MSPaint.exe

Back to top


ActiveForm Destruction
Authors Brian Long Type: Clinic
Issue 58 : June 2000 View article View source code
Summary ActiveForm Destruction
Keywords ActiveForm destruction; Application.Terminated; List of ActiveForm events

Back to top


Effective Delphi Class Engineering 2: Welcome To The Machine
Authors David Baer Type: Article
Issue 59 : July 2000 View article No source code
Summary David Baer continues his series on practical object orientation by putting Delphi's object machinery under a magnifying glass. He examines topics such as memory management, method calling, protocols and other compiler- related issues.
Keywords Class engineering; How objects work; Compiler issues; Object oriented; Class design; Language Guide; Scope; Implementation and interface; Class declaration; Delphi units; Public, published, private; Constructors and destructors; Unit design; Forward declaration; Classes and units; Memory allocation and use; Form variable; Auto-create forms; Global variables; Heap and stack; Reference counted variables; Variable initialisation; Memory use for strings; Object reference variable; Designing constructors; Using Inherited Create; TThread and inherited create; Designing destructors; Using inherited Destroy; Free and Destroy; Testing for nil; Using Self; Class data member; Memory leaks; Benign leak; TObjectList; FreeAndNil; Set object reference to nil; Multiple constructors; Object replication; Copying objects

Back to top


Under Construction: Delphi 5 Active Server Objects, 2
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 59 : July 2000 View article View source code
Summary Bob Swart completes his coverage of developing Active Server Objects by looking at the way in which WebBroker and InternetExpress can be used by an Active Server Object.
Keywords Under Construction; Active Server Objects; ASP objects; Dynamic HTML; HTML forms, CGI forms; ASP request object; Forms, fat URL, cookies; IRequestDictionary; Password field in HTML form; POST and GET form methods; World wide web www; Web applications; WebBroker and ASP objects; InternetExpress and ASP; Debugging ASP objects; IntraBob; Multi-threading ASP objects; BDE session conflicts; AutoSessionName; TPageProducer; TDataSetPageProducer; HTMLDoc property; TQueryTableProducer; TCustomWebDispatcher; WebDispatcher; MidasPageProducer; XML from ASP objects; Generating XML; XMLBroker; IIS; MTS

Back to top


Application Architecture
Authors Max Rahder Type: Article
Issue 59 : July 2000 View article View source code
Summary Architecture is a fascinating subject, thinks Max Rahder. An application architecture is an infrastructure of classes which makes it easier to extend and modify a program, by retaining core functionality in the architecture. Max discusses this topic using an example application. Dramatically reduced development and maintenance costs is the promise.
Keywords Application architecture; Frames; Infrastructure; Application design; Abstract classes; Class methods; Overriding methods; Object oriented development; Entity forms; Business entity; Model-view approach; De-coupled user interface; Form inheritance; Frames versus components; Database primary key; Integer as primary key; Reference counting; Business object

Back to top


One Last Compile...
Authors Type: Article
Issue 59 : July 2000 View article No source code
Summary It works fine here
Keywords One last compile

Back to top


Algorithms Alfresco: Arrrgh Essay
Authors Julian Bucknall Type: Article
Issue 59 : July 2000 View article View source code
Summary Julian Bucknall bravely steps into the arena to explain how the RSA encryption algorithm works. RSA is an example of public key encryption: data are encrypted using a freely available public key but can only be decrypted using a secret key, known only to the recipient of the data.
Keywords Algorithms Alfresco; RSA encryption; Public key encryption; Asymmetric encryption; Cryptography; Private and public keys; Exchanging keys; Public and secret keys; Modulo arithmetic; Binary square and multiply; Large powers; Prime numbers; Chinese remainder theorem; Leonard Euler; Pierre de Fermat; Wide word arithmetic; Large integer arithmetic; Fermat's Little Theorem; Probabilistic primality test; Carmichael numbers; Miller-Rabin algorithm; Multiplicative inverse; Euclid's extended algorithm

Back to top


Enhanced TRichEdit Controls
Authors Brian Long Type: Article
Issue 59 : July 2000 View article View source code
Summary Ever wondered why you can't put formatted text into a TRichEdit control at design-time using the property editor? Brian Long explains the reasons and develops an enhanced version of the control which answers this need.
Keywords Enhanced RichEdit controls; TRichEdit; Loading text into TRichEdit; Load RTF into RichEdit; Rich text; Formatted text into RichEdit; Store RTF text in form file; RTF as custom resource; TRichEditStrings; TRichEdit.Lines property; Fake properties; Component streaming; DefineProperties; TFiler; RecreateWnd; DestroyWnd; CreateWnd; Visual form inheritance VFI; VFI and components; Property editor; Binding RTF file into EXE; Resource files .RES; Resource scripts .RC; Resource compiler; $R directive; TResourceStream; List of RTF solutions

Back to top


Beating The System: TAR-geting Linux
Authors Dave Jewell Type: Article
Issue 59 : July 2000 View article View source code
Summary Dave Jewell's pun-making machine is in full swing this month as he provides a useful introduction to getting your code ready for Kylix (codename for Borland's eagerly-awaited Delphi for Linux) by way of a cross-platform TAR file utility.
Keywords Beating the System; Linux; TAR files; Unix; Cross-platform development; Conditional compilation; CLX; Delphi 6; Kylix: Delphi for Linux; QaPainter; Qt for Windows; Linux file system; Case-sensitive filenames; Archive files; Mutliple file archive; GZip and Tar; Coordinated Universal Time; Convert Octal to Integer; OctalToInt; Octal string; Linux file permissions

Back to top


IBSec: Securing InterBase Network Traffic On The Fly
Authors Jani Jarvinen Type: Article
Issue 59 : July 2000 View article View source code
Summary Jani JΣrvinen thinks InterBase is a great DBMS, but it has one flaw: all the data passing between server and client is open for all the world to see (not so good on the internet, for example). To overcome this he develops a utility which seamlessly encrypts and decrypts all InterBase network traffic.
Keywords InterBase security; Encrypting network traffic; Secure network traffic; Database security; Encryption; TCP/IP; Internet security; World wide web www; Web applications; IP address and port; TClientSocket; TServerSocket; WinSock API; InterBase on port 3050; Intercept TCP communication; Blocking or non-blocking; OnClientConnect; PostMessage; Custom message handlers; TThreadList; OnClientDisconnect; OnDisconnect; WSAECONNABORTED; Microsoft CryptoAPI; CAPI encryption; RC4 encryption; Streaming cypher; CryptCreateHash; CryptHashData; CryptDeriveKey; CryptEncrypt; CryptDecrypt; Encrypt with same data size

Back to top


InterBase Express Problem
Authors Brian Long Type: Clinic
Issue 59 : July 2000 View article View source code
Summary InterBase Express Problem
Keywords InterBase express login; OnLogin; LoginPrompt; LoginParams; IBX login bug; TIBDatabase; FHiddenPassword; HidePassword; IBX patch

Back to top


Strings To Numbers
Authors Brian Long Type: Clinic
Issue 59 : July 2000 View article View source code
Summary Strings To Numbers
Keywords Strings to numbers; Convert string to float; Convert string to integer; StrToFloat, StrToInt; Intercepting exceptions; IDE debugging; No exceptions in IDE; TextToFloat; Val

Back to top


Typed Constants
Authors Brian Long Type: Clinic
Issue 59 : July 2000 View article View source code
Summary Typed Constants
Keywords Typed constants; Pe-initialised variables; Initialised variables; Static variables; $J compiler directive; $WriteableConst directive

Back to top


Editing ListView Items
Authors Brian Long Type: Clinic
Issue 59 : July 2000 View article View source code
Summary Editing ListView Items
Keywords Editing ListView items; TListView; EditCaption; LVM_EDITLABEL

Back to top


Date Comments
Authors Brian Long Type: Clinic
Issue 59 : July 2000 View article View source code
Summary Date Comments
Keywords Code templates; Automatic comments; Generating date in IDE; delphi32.dci; Customising code templates

Back to top


Persistent Runtime Column Data
Authors Brian Long Type: Clinic
Issue 59 : July 2000 View article View source code
Summary Persistent Runtime Column Data
Keywords Persistent grid column data; Saving grid column layout; TDBGrid; Persistent runtime columns; TDBGrid.Columns.SaveToFile; Streams

Back to top


Delphi Grammar Problem
Authors Brian Long Type: Clinic
Issue 59 : July 2000 View article View source code
Summary Delphi Grammar Problem
Keywords CreateProcess; WaitForSingleObject; WAIT_OBJECT_0; WAIT_TIMEOUT; Waiting for a process to end

Back to top


Memos And BLOb Fields
Authors Brian Long Type: Clinic
Issue 59 : July 2000 View article View source code
Summary Memos And BLOb Fields
Keywords Memos and BLOb fields; Binary large object; Paradox BLOb fields; FieldValues; TBlobStream

Back to top


Multi-Threading And COM
Authors Brian Long Type: Article
Issue 60 : August 2000 View article View source code
Summary COM can do a lot for you, but finding out how to create multi-threaded COM apps is not easy. Brian Long helps us understand the concepts, terminology and issues involved in multi-threaded COM programming.
Keywords COM multi-threading; Multi-threaded applications; Multiple threads; COM programming; Apartments; Process identifier; Process handle; VCL not thread-safe; Synchronize; Single-threaded apartment; STA; Apartment-threaded model; Multi-threaded apartment; MTA; Free-threaded model; Thread-neutral apartment; TNA; COM+ Windows 2000; Threading model; Thread local storage TLS; ComObj, ComServ units; Initialising COM; Proxy object; PostThreadMessage; Message loop, message pump; OleMainThreadWndClass; OleMainThreadWndName; RPC thread pool; Threadvar; Thread affinity; Critical section; Mutex; Semaphore; Choosing apartment type; OleInitialize; CoInitialize; CoInitializeEx; COINIT_APARTMENTTHREADED; COINIT_MULTITHREADED; In-process COM server; Out-of-process COM server; RPC_E_CHANGED_MODE; ThreadingModel; Mixed-model process; CoInitFlags; COINIT_SPEED_OVER_MEMORY; Delphi 4 and CoInitFlags; COM object wizard; RPC_E_WRONG_THREAD; COM errors; Marshaled; Marshaling interfaces; Marshalling; IGlobalInterfaceTable; RegisterInterfaceInGlobal; GetInterfaceFromGlobal; RevokeInterfaceFromGlobal; DCOM; Creating STAs; TComObjectFactory; TTypedComObjectFactory; TAutoObjectFactory; IClassFactory; _Release; InterlockedDecrement; Apartment interaction; Both-threading model; MTS, COM+, Windows 2000

Back to top


Algorithms Alfresco: Dear Sir Or Madam
Authors Julian Bucknall Type: Article
Issue 60 : August 2000 View article View source code
Summary Julian Bucknall is in repentant mood and gets round to answering a pile of readers' emails, covering bugs and enhancements from previous columns.
Keywords Algorithms Alfresco; Readers' emails and letters; Corrections; Issue 57 Algorithms Alfresco; Millennium bug; Issue 44 Algorithms Alfresco; Storing Huffman tree; Data compression; Writing out a tree; Rewading in a tree; Storing a binary tree; Recursion; Issue 46 Algorithms Alfresco; RPN expression parsing; Operator precedence; Equal precedence; Expression evaluation; Arithmetic expression; Reverse Polish notation; Memory overread; Issue 54 Algorithms Alfresco; Encryption; ENIGMA machine; Polish mathematicians; Rejewski; Cryptography; The Code Book, Simon Singh; Issue 42 Algorithms Alfresco; Linked lists; Double linked list; Records or objects; Linked list nodes; Linked list performance; Issue 51 Algorithms Alfresco; Floating point types; Data alignment; 8 byte alignment padding; Align to 8 byte boundaries; Double type; Delphi 5; Extended; Issue 50 Algorithms Alfresco; Red-black tree; Binary tree; Insert into red-black tree; Binary search tree; Balanced tree; Compiler options; $R, $Q, $X; Range checking; Overflow checking; Extended syntax; Choosing compiler options; Issue 53 Algorithms Alfresco; Simulated annealing; Competition

Back to top


Effective Delphi Class Engineering 3: Skyrocketing Property
Authors David Baer Type: Article
Issue 60 : August 2000 View article View source code
Summary David Baer thinks properties are wonderful and this month gives us insights and advice on how they can best be put to use in our classes.
Keywords Class engineering; Class design; Object oriented development; Properties; Class properties; Public class data members; Properties as arrays; Get and set functions; Read and write specifiers; Default specifier; Initialising properties; Read-only class data access; Write-only properties; Array properties; Parameterised properties; Value by name properties; Default properties; Stored specifier; Exceptions and properties; Property validation; Optimisation; Private properties; Indexed get and set methods; Property assignments

Back to top


One Last Compile...
Authors Type: Article
Issue 60 : August 2000 View article No source code
Summary The Parent Trap
Keywords One last compile

Back to top


Beating The System: Easy Internet, 1
Authors Dave Jewell Type: Article
Issue 60 : August 2000 View article View source code
Summary Dave Jewell has been delving into Microsoft's WinInet DLL, which serves as the foundation for much of the key functionality in Microsoft's internet applications such as Internet Explorer. Dave uses the fruits of his labours to construct an FTP site browser.
Keywords Beating the System; WinInet.DLL; Internet applications; WinSock 2.0; TCP/IP; ws_32.dll; Internet Explorer; HTTP, FTP, Gopher; Delphi wrapper of WinINet; WinINet unit; InternetAutodial; Dialing internet connection; RAS dialup; Unattended dialup; Hanging up a connection; InternetAutodialHangup; InternetCheckConnection; InternetGoOnline; InternetGetConnectState; InternetOpen; Proxy server; lpszProxyByPass; Using local cache; Internet_Flag_From_Cache; HINTERNET session handle; Browse an ftp server; FTP on port 21; HTTP on port 80; HTTPS on port 443; Internet_Service_FTP; FTPGetCurrentDirectory; FTPSetCurrentDirectory; FTPFindFirstFile; FTP file finding; InternetFindNextFile; TWin32FindData; File date and time; Listing files on ftp server; GOPHER_FIND_DATA; Multi-threading; Callbacks; InternetSetStatusCallback; FTP browser example

Back to top


Under Construction: Pooling And Brokering
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 60 : August 2000 View article View source code
Summary Bob Swart returns to MIDAS 3 to explain Object Pooling and Object Brokering. If your web applications are feeling the strain and you need to share the software load over multiple servers, these technologies could provide just what you need.
Keywords Under Construction; MIDAS 3; Object pooling; Object brokering; TWebConnection; TDCOMConnection; Remote data module wizard; Single or multiple instance; OnBeforeGetRecords; State information; RegisterPooled; UnregisterPooled; Shared remote data modules; Shared MIDAS servers; TCorbaConnection; TSocketConnection; TCustomObjectBroker; ServerName or ServerGUID; TSimpleObjectBroker; Load balancing; GetComputerForGUID; GetComputerForProgID; GetPortForComputer; TServerCollection; LastConnectionTimeStamp

Back to top


Focus Made Easy
Authors Hart Kerbel Type: Article
Issue 60 : August 2000 View article View source code
Summary Hart Kerbel shares the analysis, design and implementation lessons he learnt when developing CtlFocus: a non-visual component designed to show users clearly exactly which control currently has focus should they look away from the screen and back again. Ideal for data entry tasks.
Keywords Which control has focus?; Changing control focus; CtlFocus component; Data entry; Highlight control with focus; OnActiveControlChange; Screen object; OnActiveFormChange; Event handler chain; Default TButton; CM_FOCUSCHANGED; VCL messages; CM_ messages; TCustomForm; TCMFocusChanged; Container controls; TWinControl and TComponent; Form subclassing; Windows subclassing; WndProc address; CM_ACTIVATE; CM_DEACTIVATE; RTTI; TypInfo unit

Back to top


Unexpected COM Error
Authors Brian Long Type: Clinic
Issue 60 : August 2000 View article View source code
Summary Unexpected COM Error
Keywords Automation server error; Input-synchronous call; Outgoing call cannot be made; Unexpected COM errors; IDispatch.GetIDsOfNames; DISP_E_UNKNOWNNAME; RPC_E_CANTCALLOUT...; COM threading; STA threading model; COM proxy object; COM and timers; InSendMessage

Back to top


Delphi And Email
Authors Brian Long Type: Clinic
Issue 60 : August 2000 View article View source code
Summary Delphi And Email
Keywords Sending email; Email components; MAPI; TMapiRecipDescrip; TMapiFileDesc; Automating Outlook; SMTP

Back to top


Component Construction
Authors Brian Long Type: Clinic
Issue 60 : August 2000 View article View source code
Summary Component Construction
Keywords Component construction; Form events sequence; CreateNew constructor; Form Create constructor; fsCreating in FormState; Determine form state; FindClass; csLoading, csReading; ComponentState; Determine component state; Form inheritance; Streams; Loaded; AfterConstruction

Back to top


Code Completion
Authors Brian Long Type: Clinic
Issue 60 : August 2000 View article View source code
Summary Code Completion
Keywords Code completion; Class completion; Using inherited; Using override

Back to top


Streaming Delphi Components
Authors Jason Southwell Type: Article
Issue 61 : September 2000 View article View source code
Summary Jason Southwell shows us how to stream components. The article describes a practical use of the ReadComponent and WriteComponent routines in creating a screen saver generator application.
Keywords Streaming components; Screensaver; Streams; TStream; ReadComponent; WriteComponent; ReadComponentRes; WriteComponentRes; Streaming Windows resources; Screensaver generator; Slideshow; .SCR files; RegisterClass declared twice

Back to top


Borland Conference 2000
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 61 : September 2000 View article No source code
Summary Bob Swart reports from Borland's 11th annual conference, held this year in San Diego. What's new, what's cool and what might be coming to a computer near you sometime soon!
Keywords Borland Conference 2000

Back to top


Under Construction: Delphi And Strings
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 61 : September 2000 View article View source code
Summary Strings: we use them all the time and know everything there is to know about them, right? Wrong! Bob Swart delves under the hood to explain the various character and string types available in Delphi, how they work and which ones are appropriate to which use.
Keywords Under Construction; Strings; Using string types; Choosing string types; Character types; Char, AnsiChar, WideChar; ANSI character type; Unicode; Ord, Chr, UpCase; Character functions; Ordinal number of character; PChar; PAnsiChar, PWideChar; Null terminated strings; C/C++ char* type; $X+ compiler directive; ShortString, short string; $R+ compiler directive; Uppercasing strings; String performance; Long strings, AnsiString; Reference counted strings; UniqueString; LongString; AnsiString performance; Wide strings; WideString and COM; ResourceString

Back to top


Actions And Action Lists
Authors Brian Long Type: Article
Issue 61 : September 2000 View article View source code
Summary Actions have been around since Delphi 4, but remain under-used by most developers. Brian Long thinks that's a shame and in this article sets out to show us clearly what actions and action lists are and how to use them to best effect in your applications. He also explains how to install your own new reusable actions into the Delphi IDE
Keywords Actions and Action Lists; TActionList; Shared event handlers; User-generated commands; Trigger controls; Action clients; Action targets; Why use actions?; TImageList for action images; Action List Editor; Creating actions; Action category; Events for actions; Action event handlers; Invoking actions; Action keyboard shortcuts; ImageIndex; Custom actions; Standard actions; Pre-defined actions; Action classes: TBasicAction; TContainedAction; TCustomAction; THintAction; Action link classes; Actions, data-aware controls; TBasicActionLink; TActionLink; TMenuActionLink; TControlActionLink; TToolButtonActionLink; Action architecture; Updating actions; Creating standard actions; Initialise standard actions; Register standard actions; Data modules and actions

Back to top


Beating The System: Easy Internet, 2
Authors Dave Jewell Type: Article
Issue 61 : September 2000 View article View source code
Summary Dave Jewell concludes his examination of the WinInet API. Having established the basics, this month he moves on to ftp file downloading.
Keywords Internet applications; WinInet; Downloading files using FTP; FtpGetFile; InternetReadFile; Size of files for FTP; FTP browser; Beating the System

Back to top


Algorithms Alfresco: Caching In On Algorithms
Authors Julian Bucknall Type: Article
Issue 61 : September 2000 View article View source code
Summary Julian Bucknall gives us a case study in choosing and implementing algorithms and data structures for a real world project: a file cache for use in (say) a web browser app. Along the way he covers caching principles, hash tables, priority queues and streams.
Keywords Algorithms Alfresco; Caching algorithms; File cache; Setting maximum cache size; Chooisng algorithms; Choosing data structures; Clearing a cache; Streams; Buffered file stream; File cache class; Hash table versus StringList; Priority queue; Chooisng data structures; Collisions in hash tables; Linear probing; Hash table load factor; Chaining; Collision resolution methods

Back to top


Creating Browser Help Objects
Authors Eyal Hirsch Type: Article
Issue 61 : September 2000 View article View source code
Summary Eyal Hirsch shows how you can plug your code right inside Internet Explorer to do some pretty neat tricks. All the information you need is here, plus an example to base your own projects on
Keywords Web browsers; Extending Internet Explorer; Browser help objects, BHO; COM programming; Internet Explorer extensions; Automation objects; Registering a BHO; CoClass GUID; IE5 BHO bug; Multiple BHOs in IE5; IObjectWithSite; IWebBrowser2; SHDocVW unit; Web browser events; Registering a BHO; Browser form manager; Manipulating HTML in IE5; MSHTML unit

Back to top


Design By Contract
Authors Sascha Frick Type: Article
Issue 61 : September 2000 View article View source code
Summary Sascha Frick explains what design by contract means, how it improves your development process and how to implement it using Delphi's support for assertions and invariants.
Keywords Deign by contract; Software design; Object oriented development; OOP; Inheritance and aggregation; Bertrand Meyer; Eiffel language; Assertions; Programmer errors; Breach of contract; Assert procedure; EAssertionFailed; $ASSERTIONS; $C compiler directive; Pre-conditions; Post-conditions; Invariants; Using assertions; Assertions and inheritance; Subclassing; Assertions and subclassing

Back to top


One Last Compile
Authors Type: Article
Issue 61 : September 2000 View article No source code
Summary Reporting for duty
Keywords One last compile

Back to top


Component Hints On Status Bars
Authors Brian Long Type: Clinic
Issue 61 : September 2000 View article View source code
Summary Component Hints On Status Bars
Keywords Component hint on status bar; Hints on status bars; Setting up event handlers; Creating event handlers; TApplicationEvents; TStatusBar; TStatusBar.SimplePanel; AutoHint; THintAction; Actions; ExecuteAction

Back to top


Tracking Actions
Authors Brian Long Type: Clinic
Issue 61 : September 2000 View article View source code
Summary Tracking Actions
Keywords Tracking actions; Tracing action execution; TApplication.OnExecuteAction

Back to top


Unwanted Edit Windows
Authors Brian Long Type: Clinic
Issue 61 : September 2000 View article View source code
Summary Unwanted Edit Windows
Keywords Unwanted edit windows; Delphi IDE; IDE keyboard problem; Scan code $7F; Virtual key code 0; Illegal keyboard scan code; KeyBd_Event; ecNewEditWindow; Invalid shortcuts

Back to top


WideString Properties
Authors Ray Lischner Type: Article
Issue 62 : October 2000 View article View source code
Summary Ray Lischner explains how to use properties of type WideString in your custom components, working round the restrictions of Delphi's IDE and presenting a custom property editor.
Keywords WideString properties; Unicode; Component properties; WideChar; Reference counting; CreateFileA and CreateFileW; PChar and PWideChar; Using Unicode strings; TWinControl and ANSI; DefineProperties; DefineProperty; TReader, TWriter; Streams; Writing property editors; WideString property editor; TStringProperty; RTTI for properties; TypeInfo.GetPropInfo; Owner draw property editor; Storing WideStrings in .DFM

Back to top


Under Construction: Local ClientDataSets
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 62 : October 2000 View article View source code
Summary MIDAS isn't just for multi-tier apps, says Bob Swart, but we can use it as a handy, compact and very fast local database engine, with just one DLL to ship (and no licence fees either!). Bob goes on to show how to use XML to get data into and out of a local ClientDataSet.
Keywords Under Construction; Local ClientDataSets; TClientDataSet; MIDAS; MIDAS.DLL; In-memory database; Load data into ClientDataset; ClientDataSet and XML; XML metadata and row data; ADODataSet XML; Convert dataset to XML; Export dataset to XML; Convert XML to dataset; Create table from XML; XML tag; Field definitions in XML

Back to top


Effective Delphi Class Engineering Part 4: The TObject Of My
Authors David Baer Type: Article
Issue 62 : October 2000 View article View source code
Summary David Baer focuses on inheritance in this part of his popular series on object oriented development in Delphi.
Keywords Class engineering; TObject; Inheritance; Object oriented development; OOP; Designing classes; ClassName function; Class member visibility; Private, public, protected; Protected class members; Inherited methods; Override directive; Virtual methods; Polymorphism; Virtual method table VMT; vmtInstanceSize; vmtNewInstance; vmtFreeInstance

Back to top


Searching In ADSI
Authors Marc Scheuner Type: Article
Issue 62 : October 2000 View article View source code
Summary Marc Scheuner knows that Active Directory Service Interfaces (ADSI) is a powerful set of COM objects and interfaces dealing with directories, supporting Active Directory, Novell's Netware 3.x and NDS, plus Microsoft Windows NT Server and IIS. But he also knows that using COM interfaces can be quite a challenge, so here he presents a Delphi component to wrap up the search capabilities offered by ADSI.
Keywords Searching in ADSI; ADSI; Active Directory Service; LDAP; Directory Access Protocol; Novell Netware NDS; ADSI component; COM programming; IDirectorySearch; ADO queries and ADSI; ActiveDs.dll; Dual interfaces; Late binding; Search base; AbandonSearch; ExecuteSearch; Wrapping COM objects; CoInitialize, CoUnInitialize; LDAP filter syntax; Wide strings; OLE BSTR strings; Delphi unicode library; LDAP search expressions

Back to top


Algorithms Alfresco: Careless Memories
Authors Julian Bucknall Type: Article
Issue 62 : October 2000 View article View source code
Summary Julian Bucknall has been studying the heap manager in Delphi 5 in an ugly debugging odyssey and shares the fruits of his labour: the structures and algorithms it uses, plus useful code and structures for tracking down nasty bugs that trash the heap manager.
Keywords Debugging the heap manager; Delphi heap manager; Heap memory; Invalid pointer operation; FreeMem, Dispose; GetMem, New; Destroy; Memory management; ShareMem unit; Borlndmm.dll heap manager; GetMemoryManager; SetMemoryManager; TMemoryManager; Exceptions in heap debugging; Memory alignment; Free list; Previous free block is bad; Memory overwrites; Guard bytes; Guard blocks; Delayed freeing; GetProcessHeap; TQueue; Text file device driver

Back to top


One Last Compile
Authors Type: Article
Issue 62 : October 2000 View article No source code
Summary The Midas Touch
Keywords One last compile

Back to top


Beating The System: Delphi Hails A CAB
Authors Dave Jewell Type: Article
Issue 62 : October 2000 View article View source code
Summary Dave Jewell investigates Microsoft's CAB file format and develops a Delphi class to access CAB files from your own applications, wrapping up the provided API into something a whole lot easier to use.
Keywords Beating the System; CAB files; Microsoft cabinet files; Cabinet.dll; CAB SDK; Compression, decompression; Creating CAB files; FDICreate; FDIDestroy; FDIIsCabinet; TFDICabinetInfo; CAB file folders; Spanning; FDICopy; FDINotify; CDECL calling convention; Callbacks; TFDINotification; Wrapping the CAB API

Back to top


Webifying Outlook
Authors Jani Jarvinen Type: Article
Issue 62 : October 2000 View article View source code
Summary Jani JΣrvinen wanted to be able to get addresses out of his Outlook address book over the web from thousands of miles away... Impossible? No, it just needs some lateral thinking and clever ideas. Jani shares all.
Keywords Microsoft Outlook; Access Outlook from the web; Outlook over internet; Web interface for Outlook; ISAPI applications; Web applications; COM applications; WebBroker; Web server; Named pipes; Inter-process communication; IPC; StringReplace; ReadFile, WriteFile; Blocking functions; Communicating with Outlook; Constructing a calendar; IsLeapYear; Leap year; Cache; Cannot open pipe

Back to top


Linking Data Files
Authors Brian Long Type: Clinic
Issue 62 : October 2000 View article View source code
Summary Linking Data Files
Keywords Linking data files into .EXE; Binary to object converter; BinObj32; Binary to .OBJ; Linking bitmap into .EXE; External directive; TBitmapFileHeader; TMemoryStream; Interposer class; TMemoryStream.SetPointer; Custom resources; Compiling resources

Back to top


CPU Window Bafflement
Authors Brian Long Type: Clinic
Issue 62 : October 2000 View article View source code
Summary CPU Window Bafflement
Keywords Using the CPU window

Back to top


Array Distinction
Authors Brian Long Type: Clinic
Issue 62 : October 2000 View article View source code
Summary Array Distinction
Keywords Open array and dynamic array; Open parameter types; Open array parameters; Variant open array; TVarRec

Back to top


Corrupt Component Palette
Authors Brian Long Type: Clinic
Issue 62 : October 2000 View article View source code
Summary Corrupt Component Palette
Keywords Corrup component palette; Video card driver problems; Graphics cards; Comctl32.dll; BusThrottle in system.ini

Back to top


Drag And Dock
Authors Brian Long Type: Article
Issue 63 : November 2000 View article View source code
Summary Brian Long demonstrates how to use Delphi's docking features in your applications to best effect: pitfalls for the unwary and tips to wow your users with!
Keywords Dragging and docking; Docking windows; Drag and drop; Docking toolbars; TToolbar; Undocking, ripping off; DragMode, DragKind; Dock image; Floating toolbar; Mouse.DragThreshold; BeginDrag; Mouse.DragImmediate; DockSite, dock site; OnStartDock, OnEndDock; OnDockOver; OnDockDrop; MouseDeltaY problem; TDragDockObject; MouseDeltaX; OnGetSiteInfo; Form grabber; UseDockManager; Panel grabber; InfluenceRect; TControlBar; TCoolBar; Programmatic docking; Automatick docking; ManualDock, ManualFloat; Floating; Is control docked?; Creating dock zones; Dock panels; Custom docking; DoAddDockClient; DoRemoveDockClient; TPageControl; TTabSheet; Custom drag image; TCustomDockForm; HostDockSite; FloatingDockSiteClass; Multiple docked clients; Dock manager; Creating dock manager; TToolDockObject

Back to top


Under Construction: More Local ClientDataSets
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 63 : November 2000 View article View source code
Summary Bob Swart continues his examination of TClientDataSet as a small, fast local DBMS, showing how to use XML files as input for ClientDataSets, creating true thin-client applications which can communicate with a server using sockets.
Keywords Under Construction; Local ClientDataset; TClientDataset; MIDAS; CGI applications; Web applications; Internet; Filters; n-tier applications; Sockets; TServerSocket, TClientSocket; Port numbers; Local DBMS; XML; OnClientConnection

Back to top


BorDebug: Return Of The Giant
Authors Hallvard Vassbotn Type: Article
Issue 63 : November 2000 View article View source code
Summary Hallvard Vassbotn describes how to use Borland's recently released BorDebug.DLL to read and interpret TD32 debugger information in our own applications, making it possible to introduce some very powerful debugging options.
Keywords BorDebug.DLL; Debugging; Turbo debugger 32, TD32; Reading debugger data; IDE debugger; Turbo Debugger file format; Microsoft debugger format; Giant.txt; Giant format; Debugging settings; Compiler configuration; MAP files; TDStrp32.exe; Stripping out debug data; EXE file structure; .TDS files; BorDebugRegisterFile; EXE file subsections; Modules; BorDebugSubSectionCount; AlignSym; Segments; Source module ranges; Source file ranges; GlobalSym; GlobalPub; Symbol type index; BorDebug wrapper classes; Debug data dump

Back to top


Effective Delphi Class Engineering Part 5: You Are TEgg Man...
Authors David Baer Type: Article
Issue 63 : November 2000 View article No source code
Summary David Baer has not gone mad (though he may have been listening to too many old Beatles albums!): this instalment of his series continues his practical real-world discussion of polymorphism and inheritance.
Keywords Effective Class Engineering; Abstract methods; Polymorphism; TStream, stream objects; Virtual methods; TStrings; Manage and store strings; Designing class hierarchies; Class design; Object oriented; OOP; Inheritance; Dynamic methods; VMT virtual method table; Constructors; Class methods; NewInstance; inherited keyword; Hidden properties; Inherited properties; Inherited method calls; Multiple inheritance; Compiler hints and warnings; Reintroduce keyword; Suppress warnings

Back to top


One Last Compile
Authors Type: Article
Issue 63 : November 2000 View article No source code
Summary In The Frame
Keywords One last compile...

Back to top


Beating The System: A Smorgasbord Of GDI Wonders
Authors Dave Jewell Type: Article
Issue 63 : November 2000 View article View source code
Summary Dave Jewell delves into some little-known areas of the Windows API to uncover a variety of useful gems, such as getting and changing the display mode, plus creating 'marching ant' effects for rubber band style selection areas in your applications.
Keywords Beating the System; GDI graphics; Windows API; Display mode enumeration; Available resolutions; QuickRes; EnumDisplaySettings; Screen size; GetDeviceCaps; Enum_Current_Settings; Changing display mode; Changing screen resolution; ChangeDisplaySettings; Marching ants; Highlight selected item; LineDDA; Delphi DCU file format; DeDe Delphi decompiler

Back to top


Delphi Junction: The Sequel
Authors David Baer Type: Article
Issue 63 : November 2000 View article No source code
Summary David Baer gives you another chance to test your knowledge with a Delphi-based crossword.
Keywords Delphi junction crossword; Crossword puzzle

Back to top


Algorithms Alfresco: Come Together
Authors Julian Bucknall Type: Article
Issue 63 : November 2000 View article View source code
Summary Julian Bucknall tackles the problem of sorting large files of data by explaining the mergesort algorithm. So stop loading that 100Mb data file into a sorted StringList right now and read on!
Keywords Algorithms Alfresco; Sorting large files; Sorting algorithms; Quicksort problems; Mergesort, merge sort; Heapsort; File-based sorting

Back to top


InterBase Generators
Authors Brian Long Type: Clinic
Issue 63 : November 2000 View article View source code
Summary InterBase Generators
Keywords InterBase generators; Generate unique value; Generate unique key; AutoGenerateValue; arAutoInc; Auto incrementing; AutoRefresh

Back to top


VCL Debugging Query
Authors Brian Long Type: Clinic
Issue 63 : November 2000 View article View source code
Summary VCL Debugging Query
Keywords Avoid debugging the VCL; Debugger; Turn Debug DCUs off

Back to top


BDE Paradox User Limit
Authors Brian Long Type: Clinic
Issue 63 : November 2000 View article View source code
Summary BDE Paradox User Limit
Keywords BDE Paradox user limit

Back to top


Strange Form Behaviour
Authors Brian Long Type: Clinic
Issue 63 : November 2000 View article View source code
Summary Strange Form Behaviour
Keywords Label captions missing; Splash screen; Application.ProcessMessages

Back to top


Task Manager Figure
Authors Brian Long Type: Clinic
Issue 63 : November 2000 View article View source code
Summary Task Manager Figure
Keywords NT task manager; Memory usage; QueryWorkingSet; GetHeapStatus; GlobalMemoryStatus

Back to top


Property Editor Question
Authors Brian Long Type: Clinic
Issue 63 : November 2000 View article View source code
Summary Property Editor Question
Keywords Property editors; RegisterIntegerConsts; Integer constant properties

Back to top


Scrolling System Tray Text
Authors Brian Long Type: Clinic
Issue 63 : November 2000 View article View source code
Summary Scrolling System Tray Text
Keywords Scrolling system tray text

Back to top


Using InterBase From Delphi
Authors Nigel Cohen Type: Article
Issue 64 : December 2000 View article View source code
Summary Nigel Cohen explains how to get started with InterBase if you've never dipped a toe in the client/server database waters before. Whether you're looking to leave the BDE behind or wanting to take full advantage of the opportunities offered by Kylix, this is for you.
Keywords Using InterBase from Delphi; Database; Client/Server; Not using BDE; Kylix, Linux; InterBase Express, IBX; TIBDatabase; TIBTransaction essential; TIBTable; TIBQuery; Transactions; StartTransaction; Rollback; Commit; TDataset; IBExpress; DBExpress; Installing InterBase; IBPhoenix; Open Source; Windows NT service pack 5; Metadata; SQL command text editor; Basic SQL commands; SQL SELECT; SQL UPDATE; SQL INSERT, DELETE; SQL WHERE; SQL string matching % and *; SQL wildcards; SQL SUM, AVG COUNT; InterBase View; Stored procedures

Back to top


Algorithms Alfresco: The Holly And The Ivy
Authors Julian Bucknall Type: Article
Issue 64 : December 2000 View article View source code
Summary Julian Bucknall has a stocking full of festive algorithms developed in co-operation with Father Christmas.
Keywords Algorithms Alfresco; Creation order of objects; Debugging; Constructor; GetMem; NewInstance; FreeInstance; TObject.Create; Custom heap manager; EBP stack base pointer; System._GetMem; Memory fragmentation; Heap fragmentation; Memory manager; Weighted random numbers; Percentiles; Partition algorithm; Mergesort arbitrary data; Zlib compression

Back to top


Getting Clever With WebBroker... Without The Web
Authors Paul Warren Type: Article
Issue 64 : December 2000 View article View source code
Summary Paul Warren uses HTML a lot to provide output from his applications and has discovered that WebBroker provides an ideal way to generate that output using user-modifiable template files. And it all works just fine without the web!
Keywords WebBroker without the web; Generating HTML output; TPageProducer; HTMLFile; HTML template files; Replacing HTML tags; Saving TPageProducer output; Form printing; Form templates; Database reports; DataSetPageProducer; PageProducer text parsing

Back to top


Beating The System: IDE Secrets, Part 1
Authors Dave Jewell Type: Article
Issue 64 : December 2000 View article View source code
Summary Dave Jewell has been taking apart the Delphi IDE again, to discover a neat way to create Experts which will augment the capabilities of our favourite development environment. Including painless dockable IDE windows and toolbar forms.
Keywords Beating the System; Delphi IDE secrets; IDE-only packages; CORIDE50 package; DSNIDE50 package; Dockable IDE add-ins; Dockable IDE windows; Writing IDE experts; TIExpert; TDockableForm; TDesktopForm; DeskForm unit; RegisterDesktopFormClass; DeskUtil; Desktop configuration file; SaveWindowState; IDE toolbar forms; TDockableToolbarForm; IDECommandButton; TCommandButton

Back to top


The Hidden Power Of Jet
Authors Guy Smith-Ferrier Type: Article
Issue 64 : December 2000 View article View source code
Summary Guy Smith-Ferrier explains that Microsoft's Jet engine is not just for interfacing with MS Access databases. Did you know it can talk to Paradox files, Excel, structured text files, and even HTML tables?
Keywords Jet database engine; Jet OLE DB provider; MDAC; Installable ISAM drivers; Paradox through Jet; TADOTable; Excel through Jet; TADOTable; Jet Extended Properties; Schema.ini; Text ISAM driver; Jet data export; Jet HTML data import

Back to top


Under Construction: Wireless Application Protocol
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 64 : December 2000 View article View source code
Summary Bob Swart has been pushing the envelope of new technology: he explains what WAP is all about and how to create applications for generating the WML XML-like code that WAP phones use.
Keywords Under Construction; WAP; Wireless; WML; Mobile phones; Nokia WAP toolkit; XML; WML tags; WMLScript, ECMAScript; WebBroker and WML; Dynamic WML; ISAPI; DataSetPageProducer; WAP gateway

Back to top


One Last Compile
Authors Type: Article
Issue 64 : December 2000 View article No source code
Summary The Joy Of SQL
Keywords One last compile

Back to top


Solution To Delphi Junction: The Sequel
Authors David Baer Type: Article
Issue 64 : December 2000 View article No source code
Summary David Baer gives us the solution to last month's crossword. If you got it right, award yourself a dozen extra mince pies!
Keywords Delphi Junction solution; Crossword puzzle

Back to top


Successful Web Application Design
Authors Jason Southwell Type: Article
Issue 64 : December 2000 View article No source code
Summary Jason Southwell explains some of the principles behind designing web applications that are going to work, including five steps to avoid common pitfalls, based on his own extensive experience.
Keywords Web application design; Internet; World wide web www; Internet integration; ISAPI, CGI, WinCGI; Scalability; Stress testing

Back to top


Extending Actions
Authors Brian Long Type: Clinic
Issue 64 : December 2000 View article View source code
Summary Extending Actions
Keywords Extending actions; Custom actions; Standard actions; Actions and Action lists; SendAppMessage

Back to top


InActiveX
Authors Brian Long Type: Clinic
Issue 64 : December 2000 View article View source code
Summary InActiveX
Keywords ActiveX in Internet Explorer; ActiveX Licensing; IClassFactory2; Licence file .LIC; CreateInstanceLic; RequestLicKey; Licence package file .LPK; License Package Authoring; LPK_Tool.exe; HTML OBJECT tag

Back to top


Unit Usage
Authors Brian Long Type: Clinic
Issue 64 : December 2000 View article View source code
Summary Unit Usage
Keywords Unit usage; Unused units in uses; Uses clause

Back to top


Paper Orientation
Authors Brian Long Type: Clinic
Issue 64 : December 2000 View article View source code
Summary Paper Orientation
Keywords Change paper orientation; Printer DEVMODE; DM_ORIENTATION; Printing; TPrinter; GetPrinter, SetPrinter; GlobalLock, GlobalUnlock; Handle to pointer; OpenPrinter; DocumentProperties

Back to top


Debugger Glitch
Authors Brian Long Type: Clinic
Issue 64 : December 2000 View article View source code
Summary Debugger Glitch
Keywords Debugging; Stepping through code; Gutter width

Back to top


IDE Anomaly
Authors Brian Long Type: Clinic
Issue 64 : December 2000 View article View source code
Summary IDE Anomaly
Keywords Minimize on run; Delphi IDE

Back to top


Debugger Failure
Authors Brian Long Type: Clinic
Issue 64 : December 2000 View article View source code
Summary Debugger Failure
Keywords Debugging; Integrated debugger; bordbk50.dll missing; Debugger kernel missing

Back to top


Missing Code Parameters
Authors Brian Long Type: Clinic
Issue 64 : December 2000 View article View source code
Summary Missing Code Parameters
Keywords Code Parameters tooltip

Back to top


Maximizing Web Applications With Database Pools
Authors Jason Southwell Type: Article
Issue 65 : January 2001 View article View source code
Summary Jason Southwell addresses the problem of getting your database-driven web applications to scale seamlessly, showing how to implement database connection pooling to avoid those awful 'site busy...' messages.
Keywords Database pools; Web applications; Scalability; CGI; Internet; InterBase; Database connection delay; ISAPI; Query queues; Database pool component; InterBase Express IBX; Query queue component

Back to top


Beating The System: Delphi Meets .NET
Authors Dave Jewell Type: Article
Issue 65 : January 2001 View article View source code
Summary Dave Jewell has been poking around in Microsoft's goodie bag again, this time inside the GDI+ DLL which is part of the Redmond giant's exciting new .NET framework. He explains how we can access GDI+ from Delphi to use some cute new drawing capabilities: clever brushes, alpha blending and more.
Keywords Delphi and .NET; GDI+; .NET framework; Using .NET libraries; GDIPLUS.DLL; SystemDrawing.dll; ILDASM; GdipCreatefromHDC; Graphics surface; Device context handler; GDI+ brushes; Transparency; GDI+ brush types; Draw arbitrary paths; Graphics; Bezier curves; Gradient fills

Back to top


The Data Shape OLE DB Provider
Authors Guy Smith-Ferrier Type: Article
Issue 65 : January 2001 View article No source code
Summary Guy Smith-Ferrier explains how this provider, also known as MSDataShape and introduced in ADO 2.0, provides some useful functionality: hierarchical recordsets, parameterised hierarchies, reshaping, aggregate functions, grouping, adding blank fields and more.
Keywords Data shape OLE DB provider; ADO recordsets; ADOExpress; TClientDataset; MSDataShape; Hierarchical recordsets; Master/detail; SQL SHAPE; Persistent datasets; SQL RELATE; ADOExpress bug; Reshaping; Aggregate functions; Grouping data with COMPUTE; Adding blank fields; Custom shapes

Back to top


Algorithms Alfresco: The Man-Machine
Authors Julian Bucknall Type: Article
Issue 65 : January 2001 View article View source code
Summary Julian Bucknall investigates state machines (or finite automata if you want to be clever), showing how they can provide elegant and efficient solutions to a number of programming problems.
Keywords Algorithms Alfresco; Finite automata; Finite state machines; Replace characters in string; States, tokens; Search and replace; String replacement; Automaton; Deterministic; Non-deterministic; String validation; Backtracking; Regular expression matching

Back to top


Effective Delphi Class Engineering Part 6: To Talk Of Many Thing
Authors David Baer Type: Article
Issue 65 : January 2001 View article View source code
Summary David Baer concludes his series on developing Delphi classes with a miscellany of sound advice, ranging from events to exceptions, RTTI and message handling.
Keywords Class engineering; Class design; OOP; Object oriented; Using events; Procedural types; Event handlers; Creating new event types; Custom events; TNotifyEvent; Sender; Exceptions; Exception handling; Exception types; Try..except; Assign method; TPersistent; RTTI for classes; Message handling; Message handler

Back to top


Under Construction: Wireless Application Protocol, Part 2
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 65 : January 2001 View article View source code
Summary Bob Swart continues his explanation of writing applications that your WAP phone can access, covering the use of WAP images in the WBMP format.
Keywords Under Construction; WAP; Wireless devices; Mobile phones; WML; WML images, WBMP; Mime types; HTTP headers; Generating WBMP; Dynamic images; Internet; DatasetTableProducer for WML; WebBroker and WML; Generating WML; Database and WML

Back to top


One Last Compile
Authors Type: Article
Issue 65 : January 2001 View article No source code
Summary The Empire Strikes Back
Keywords One last compile...

Back to top


Time Is The Simplest Thing
Authors Primoz Gabrijelcic Type: Article
Issue 65 : January 2001 View article View source code
Summary ...not! Primoz Gabrijelcic has been researching the different time systems used throughout the world and constructing a library of routines for converting between them.
Keywords Time zone conversion; Time standards; Daylight saving time; GMT; Coordinated Universal Time; Swatch Internet Time; UTZ PST TZ; ESBDates package; TTimeZoneInformation; TIME_ZONE_INFORMATION; British Summertime; Bias, DaylightBias; Date formats; TDateTime; Day in a month format; Day of the month; Calendar

Back to top


DataSet Actions Flaw
Authors Brian Long Type: Clinic
Issue 65 : January 2001 View article View source code
Summary DataSet Actions Flaw
Keywords DataSet actions problem; Standard actions; UpdateAction; ExecuteAction; UpdateTarget; ExecuteTarget

Back to top


VCL Keystroke Behaviour
Authors Brian Long Type: Clinic
Issue 65 : January 2001 View article View source code
Summary VCL Keystroke Behaviour
Keywords VCL keystroke handling; Alt key behaviour on a form; MDI and SDI; HookMainWindow

Back to top


Problematic Custom Edit Control
Authors Brian Long Type: Clinic
Issue 65 : January 2001 View article View source code
Summary Problematic Custom Edit Control
Keywords Custom edit control; TCustomControl; Keyboard shortcuts; Forms and dialogs; wm_GetDlgCode; DLG_WANTCHARS; WM_CHAR; Processing keystrokes

Back to top


Drag And Drop Hot Spots
Authors Brian Long Type: Clinic
Issue 65 : January 2001 View article View source code
Summary Drag And Drop Hot Spots
Keywords Drag and drop hot spots; Custom drag object; Custom drag image; Custom drag cursor; TDragImageList; SetDragImage

Back to top


Records In Variants
Authors Brian Long Type: Clinic
Issue 65 : January 2001 View article View source code
Summary Records In Variants
Keywords Records in variants; ActiveX; Packed record; OleVariant; Automation objects; Safecall calling convention; Automation-compatible types; VarArrayCreate; Array from Variant

Back to top


Conditional Compilation
Authors Brian Long Type: Clinic
Issue 65 : January 2001 View article View source code
Summary Conditional Compilation
Keywords Conditional compilation; $DEFINE; $IFDEF; $UNDEF

Back to top


SQL Components
Authors Nando Dessena Type: Article
Issue 66 : February 2001 View article View source code
Summary Nando Dessena presents a framework for building search forms against relational client/server databases.
Keywords SQL components; Searching databases; Database search; Client/server; Searching and filtering; Ranges, filters; Lookup; Building SQL queries; InterBase

Back to top


Algorithms Alfresco: Everything Put Together Falls Apart
Authors Julian Bucknall Type: Article
Issue 66 : February 2001 View article View source code
Summary Julian Bucknall builds on last month's explanation of state machines (or, if you prefer, finite automata) to describe the parsing, compiling and use of regular expressions.
Keywords Algorithms Alfresco; Regular expressions; Finite state machines; Expression matching; Parse regular expression; Parsing; Regex; Top-down parser; Recursive descent parser; Metacharacter; Grammar; Regular expression parser

Back to top


Custom Shell Verbs Using DDE
Authors Brian Long Type: Article
Issue 66 : February 2001 View article View source code
Summary Brian Long shows that DDE is not dead and still has a useful part to play in a developer's toolkit. The official way to add custom items to a file's context menu in Windows Explorer is to write a COM shell extension object... but it turns out DDE is a whole lot easier and is also the technique used by Microsoft!
Keywords Custom shell verbs; DDE; Windows Explorer; DDE handler; Shell extension objects; COM shell extensions; DDE server; DDE service; ddeMgr.Appname; DDE macro; File association; DDE message; ShellExecute, ShellExecuteEx; Write DDE server; TDdeServerConv bug; Canonical verbs; Parsing; OnExecuteMacro

Back to top


Beating The System: IDE Secrets, Part 2
Authors Dave Jewell Type: Article
Issue 66 : February 2001 View article No source code
Summary Dave Jewell returns to poring over the entrails of the Delphi IDE, in particular the undocumented DSNIDE50 package, showing how we can use it to make better IDE wizards.
Keywords Beating the System; Delphi IDE secrets; DSNIDE50; IDE Experts; DeskForm, DockToolForm; DSGINTF; DockableToolbarForm; Docking forms Delphi IDE; Toolbar forms Delphi IDE; Deciphering DCU files; IDEMessages; Delphi IDE messages; TJoinDockForm

Back to top


One Last Compile...
Authors Type: Article
Issue 66 : February 2001 View article No source code
Summary Wired up and winding down.
Keywords One last compile...

Back to top


Under Construction: VisiBroker 3.3 for Delphi 5
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 66 : February 2001 View article View source code
Summary Bob Swart explains the goodies available in the latest version of Borland's tool for making CORBA applications easier for Delphi developers, including a new and much improved IDL2Pas.
Keywords Under Construction; VisiBroker 3.3 for Delphi 5; IDL2Pas; CORBA; Create CORBA servers; IDL Interface definition; CORBA client; Basic Object Adaptor BOA; BOA.ImplIsReady; BOA.ObjIsReady; CorbaInitialize; Server skeleton; Client stub

Back to top


Refactoring In The Real World
Authors Brandon Smith Type: Article
Issue 66 : February 2001 View article No source code
Summary Brandon Smith shows how he used the principles of refactoring in a real-world project: a handy utility to build multi-application projects using the Delphi command-line compiler.
Keywords Refactoring; Martin Fowler; Converting procedural code; Converting code to OO; N-Tier applications; Multi-tier; Project builder utility; Build and make projects; Building components; Command line compiler; DCC32.exe; Redirect DOS process output; Bad smells; Speculative generality; Long method stink

Back to top


Using XML And XSLT In Delphi
Authors Craig Murphy Type: Article
Issue 66 : February 2001 View article View source code
Summary Craig Murphy decrypts the latest crop of acronyms to fly across our desks and shows how to use XML and XSLT within our Delphi apps to transform documents (such as HTML report files or websites) into other formats on demand.
Keywords XML and XSLT; XSL Stylesheet; XML transformation; W3C standards; XML document elements; XML tags; XSLT processors; XT, Saxon; Internet Explorer 5; Namespace; Converting XML; Filtering XML elements; Using XSLT for filtering; ; XPath; ; MSXML type library; Sorting XML using XSLT; Microsoft MSXML3; XSL98 and XSLT; BizTalk Mapper

Back to top


Printing Web Pages
Authors Brian Long Type: Clinic
Issue 66 : February 2001 View article View source code
Summary Printing Web Pages
Keywords Printing web pages; Printing Internet Explorer; KeyBd_Event; Window handles; TWebBrowser; Window focus; ExecWB; QueryStatusWB; OLECMDID_PRINT

Back to top


Unit Ambiguity
Authors Brian Long Type: Clinic
Issue 66 : February 2001 View article View source code
Summary Unit Ambiguity
Keywords SetParent Windows API; VCL SetParent; Scope

Back to top


Moved Components Lose Events
Authors Brian Long Type: Clinic
Issue 66 : February 2001 View article View source code
Summary Moved Components Lose Events
Keywords Moving components; Notification messages; Windows messages; WM_COMMAND; WM_NOTIFY; Component notification

Back to top


Unreadable Tooltips
Authors Brian Long Type: Clinic
Issue 66 : February 2001 View article View source code
Summary Unreadable Tooltips
Keywords Unreadable tooltips; Code completion; Tooltip font colour color; TKibitzHintWindow; HintHidePause

Back to top


Elusive Package Editors
Authors Brian Long Type: Clinic
Issue 66 : February 2001 View article View source code
Summary Elusive Package Editors
Keywords Package editor window; Delphi IDE; Package editor not visible

Back to top


A First Look At Kylix: Electric Penguins Are Go!
Authors Dave Jewell Type: Article
Issue 67 : March 2001 View article No source code
Summary Based on a late Field Test version, Dave Jewell's technical overview is designed to help you grasp what Borland's new Delphi-compatible development system for Linux is all about.
Keywords Kylix first look review; Delphi for Linux; Pascal; CLX and VCL; Qt library; Trolltech; Unix; QObjectList; QObjectList_count; Installing Kylix; Linux distributions; VMWare; KDE; Kylix IDE; TLCDNumber; Qt widgets; Linux SO libraries; Linux DLLs; Kylix packages

Back to top


Threaded Inner-Process Communication
Authors David Selwood Type: Article
Issue 67 : March 2001 View article View source code
Summary David Selwood explains how to implement communication between multiple threads, examining the different mechanisms available as well as other threading issues not covered before.
Keywords Threaded inner-process comm; Inner-process communication; Threading; Communicate between threads; TThread; BeginThread; CreateThread; Creating threads; IsMultiThread; Initialising thread; CreateSuspended; TThread.resume; TThreadRec; TCriticalSection; Critical section; Blocking execution; Multi-threading; TryEnterCriticalSection; Thread synchronisation; Thread synchronization; TThread.Synchronize; TMultiReadExclusiveWriteS...; Multiple threads reading; Global variables and threads; ThreadVar; Thread message queues; Application.ProcessMessages; Sleeping; PostThreadMessage; SendMessage; Terminated flag; TThread.Terminate; OnTerminate; FsynchronizeException; Thread returning results; Return results from thread; FreeOnTerminate; TThread.WaitFor; Terminating threads; Deadlock; Capturing thread exceptions; Debugging threads; Delphi IDE thread status; Multiple processors; Dr Watson utility; drwtsn32.exe; TThreadList thread-safe; Thread-safe objects; Priority class; Thread priority; NORMAL_PRIORITY_CLASS; FreeAndNil; Maximum threads; Thread-safe DLLs; ShareMem; DLL_THREAD_ATTACH; Databases and threading

Back to top


Under Construction: VisiBroker 3.3 For Delphi 5, Part 2
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 67 : March 2001 View article View source code
Summary Bob Swart continues his discussion of the new version of VisiBroker for Delphi, this month covering support for special type constructs and CORBA callbacks.
Keywords Visibroker 3.3 for Delphi 5; CORBA; IDL; Enum, union, sequence; IDL2PAS; CORBA server; CORBA client; CORBA callbacks

Back to top


Appbars And Clipboard Viewers
Authors Paul Warren Type: Article
Issue 67 : March 2001 View article View source code
Summary Paul Warren shows how to create Appbars (windows which behave just like the Windows Taskbar, docking to the side of the desktop) and implements a clipboard viewer as an Appbar.
Keywords Appbars; Clipboard viewer; Windows taskbar; Windows API; Anchoring forms; SHAppBarMessage; APPBARDATA structure; ShellAPI.TAppBarData; BorderStyle; wmAppBarMessage; ABM_QUERYPOS; ABM_SETPOS; Appbar messages; Appbar notifications; WMWindowPosChanging; SetClipboardViewer; WM_DrawClipboard; WM_ChangeCBChain

Back to top


Algorithms Alfresco: What's The Difference
Authors Julian Bucknall Type: Article
Issue 67 : March 2001 View article View source code
Summary Julian Bucknall wants to find the longest common subsequence: that's file differencing to you and me.
Keywords File differencing; Longest common subsequence; File differences; File comparison; Comparing files; Algorithms Alfresco; File changes; Unix DIFF; WinDiff; String differences; Transforming words; String subsequence; Fibonacci number; Matrix class; Matrix algorithm

Back to top


Speeding Up A Mathematical Expression Parser
Authors Hallvard Vassbotn Type: Article
Issue 67 : March 2001 View article View source code
Summary Hallvard Vassbotn discovers Pentium processor design can slow expression parsing dramatically. The cure is to generate optimised machine code at runtime. It's not as hard as it sounds!
Keywords Mathematical expressions; Algebra; Parsing expressions; Expression parser; Formula evaluation; Generating machine code; Pentium processor; Branch prediction logic; Misprediction penalty; Stefan Hoffmeister; Parser10 library; Parser component; Mathematical functions; Delayed DLL loading; PAGE_EXECUTE flag; PAGE_EXECUTE_READWRITE; Windows 2000; Plotting XY functions; Graphs and charts; TeeChart; Code optimisation; Performance optimisation

Back to top


One Last Compile...
Authors Type: Article
Issue 67 : March 2001 View article No source code
Summary Getting the right package
Keywords One last compile...

Back to top


Beating The System: Taming The Windows Desktop, Part 1
Authors Dave Jewell Type: Article
Issue 67 : March 2001 View article View source code
Summary Dave Jewell reveals a useful but poorly understood technique: DLL injection, and shows how it can be used to save and restore your Windows desktop.
Keywords Beating the System; Saving the Windows desktop; Windows desktop layout; Desktop icon locations; DLL injection; Arrange desktop icons; Windows Explorer; 12Ghosts SaveLayout; Desktop snapshot; Inter-process communication; TListView; vsIcon; COMCTL32.DLL; ProgMan program manager; GetWindow; SHELLDLL_DefView; Shell view router; Shell desktop programming; LVM_GetItemCount; CommCtrl; Hooking a thread; Application process space; Explorer address space; C++ pragma; Shared data segment; Shared data section; Hook message queue; GetWindowThreadProcessID; SetWindowsHookEx; PostThreadMessage

Back to top


Debugging Windows NT Service Applications
Authors Dennis Passmore Type: Article
Issue 67 : March 2001 View article View source code
Summary Dennis Passmore explains a handy technique for debugging NT Services.
Keywords Debugging NT services; NT Service applications; Windows NT Windows 2000; Delphi 5 built-in debugger; NT Task Scheduler; AT command; Security context; LocalSystem; Scheduling jobs; ServiceExecute

Back to top


Reviewed: Plasmatech Shell Control Pack 1.5b
Authors Chris Frizelle Type: Review
Issue 67 : March 2001 View article No source code
Summary Reviewed: Plasmatech Shell Control Pack 1.5b
Keywords Review; Shell control pack; Plasmatech; Windows shell; Windows Explorer; DirectoryListBox; FileListBox; DriveComboBox; SelectDirectory; Select a directory; Windows shell wrapper; SHBrowseForFolder

Back to top


Reviewed: Dave Baldwin's HTML Display Components
Authors Chris Frizelle Type: Review
Issue 67 : March 2001 View article No source code
Summary Reviewed: Dave Baldwin's HTML Display Components
Keywords Review; Dave Baldwin; HTML display; HTML components; HTML viewer

Back to top


Transfer Efficiency
Authors Brian Long Type: Clinic
Issue 67 : March 2001 View article View source code
Summary Transfer Efficiency
Keywords Creating DLLs; Packages; Making DLLs smaller; Smart linker

Back to top


Transient Stay-On-Top
Authors Brian Long Type: Clinic
Issue 67 : March 2001 View article View source code
Summary Transient Stay-On-Top
Keywords Transient stay-on-top; Floating windows; Docking; fsStayOnTop FormStyle; HWND_TOPMOST; SetWindowLong; SetWindowPos; WM_ACTIVATEAPP; NormalizeTopmosts; RestoreTopmosts; OnDeactivate handler; TApplicationEvents

Back to top


Drag And Drop And Scrolling
Authors Brian Long Type: Clinic
Issue 67 : March 2001 View article View source code
Summary Drag And Drop And Scrolling
Keywords Drag and drop; Scrolling treeview; Scroll when drop to treeview; OnDragOver; ScrollBars; DD_DEFSCROLLINSET; Inset region; DD_DEFSCROLLDELAY; Scroll delay; Scroll interval; DD_DEFSCROLLINTERVAL; DragScrollInset; DragScrollDelay; DragScrollInterval; win.ini; GetSystemMetrics

Back to top


Distributed Application Development With SOAP
Authors Craig Murphy Type: Article
Issue 68 : April 2001 View article View source code
Summary Craig Murphy demonstrates distributed application development using Delphi with version 2 of the Microsoft SOAP Toolkit. Discover how to make SOAP work for your application needs.
Keywords Distributed applications; SOAP; Internet, world wide web; Microsoft SOAP toolkit 2.0; UDDI, WSDL; XML; SOAP request; SOAP listener; SOAP endpoint; HTTP; SOAP message structure; SOAP envelope; SOAP header; SOAP child; ; ; Web Services; XML schema; Creating WSDL; WSML; Web Service Meta Language; Building web services; Wsdlgen.exe; MSSOAP.SoapServer; ASP request object; ASP response object; Calling web services; Consuming web services; MSSOAP.SoapClient; Registry of web services; BizTalk Server

Back to top


Under Construction: Data-Awareness And Interfaces
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 68 : April 2001 View article View source code
Summary Bob Swart discusses data-aware components, using an IDataAware interface to conveniently and easily manage data-aware components.
Keywords Data-aware components; Under Construction; Databases; Interfaces; Creating components; Building components; DataSource; DataField; TFieldDataLink; FFieldDataLink; DB, DBCtrls units; OnDataChange; OnUpdateData; Is a component data-aware?; Detect data-awareness; Interface method; GetInterface; Is an interface implemented?; Data-aware interface; Test for an interface

Back to top


Back to Basics: A Reintroduction To Properties, Part 1
Authors Dave Jewell Type: Article
Issue 68 : April 2001 View article View source code
Summary To help those who are relatively new to Delphi and/or Kylix, Dave Jewell provides an introduction to properties and how useful they are: not just for component developers, either!
Keywords Introduction to properties; Using properties; Properties without component; Delphi and Kylix; Object properties; How properties work; Property keyword; Reader and writer; Get and set routines; Encapsulation; Getter and setter; Private fields; Hiding the implementation; Property visibility; Scope; Indexed property

Back to top


Perspectives: Microsoft Visual Studio .NET
Authors Steve Scott Type: Article
Issue 68 : April 2001 View article No source code
Summary In this new column, Steve Scott gives a personal opinion on Microsoft's forthcoming Visual Studio .NET: as an enthusiastic Delphi developer, what does VS.NET have to offer and what does Delphi need to do to continue to win the hearts of Windows developers?
Keywords Perspectives; Microsoft Visual Studio .NET; .NET framework; VS.NET; Memory management; Garbage collection; Windows API; C# language; Intermediate language IL; Common language runtime CLR; Just-in-time compiler; Anders Hejlsberg; Pascal, Java and c#; ASP.NET

Back to top


Algorithms Alfresco: The 51st State
Authors Julian Bucknall Type: Article
Issue 68 : April 2001 View article View source code
Summary Julian Bucknall returns to state machines to show how to create a parser for Object Pascal code: extracting comments and recognising language keywords, providing a foundation which could be used for a 'pretty printer' code formatter, for example. He also deals with optimisation of regex evaluation.
Keywords Algorithms Alfresco; State machines; Regular expressions; Parsing Object Pascal; Pascal parser; Automaton; Extracting comments; Parsing by character; Streams, TStream; Stream filter; TFileStream; Read file by character; Buffered stream; Line endings; Tokenizing; Pascal tokens; Recognising keywords; Hash table; Regex testing; Exponential regex; X(.+)+X regex; Convert NFA to DFA; TList in Delphi 5; TObjectList performance; Binary tree; String matching

Back to top


One Last Compile...
Authors Type: Article
Issue 68 : April 2001 View article No source code
Summary Tips trom the top.
Keywords One last compile...

Back to top


Let's Cooperate
Authors Primoz Gabrijelcic Type: Article
Issue 68 : April 2001 View article View source code
Summary Primoz Gabrijelcic describes how to create and use file system-based synchronisation primitives: ideal for use with distributed systems, spread across a number of computers.
Keywords File-based synchronisation; Synchronisation primitives; Thread synchronisation; Multi-threading; Critical section; Mutex; Semaphore; Signal; Distributed applications; Inter-process communication; Shared read mode; File-based mutex; File-based critical section; File-based group; Process group; Synchronisation event; File-based SendMessage; Single writer multiple read

Back to top


Beating The System: Taming The Windows Desktop, Part 2
Authors Dave Jewell Type: Article
Issue 68 : April 2001 View article View source code
Summary Dave Jewell has the second part of his unravelling of the Windows Desktop, with more on the fascinating technique of DLL injection and how to avoid the need for C/C++!
Keywords Beating the System; Windows desktop layout; Save desktop icons; DLL injection; Shared data segment; SetWindowsHookEx; UnhookWindowsHookEx; WM_COPYDATA; Desktop icon caption; LVM_GetItemText; LVITEM structure; Send data between processes; dwData integer not pointer; Deadlock

Back to top


Auto-Repeat Toolbuttons
Authors Brian Long Type: Clinic
Issue 68 : April 2001 View article View source code
Summary Auto-Repeat Toolbuttons
Keywords Auto-repeat buttons; Speed button, tool button; TButton; OnMouseDown; OnMouseMove; OnMouseUp; ControlState

Back to top


Paradox And The Euro symbol
Authors Brian Long Type: Clinic
Issue 68 : April 2001 View article View source code
Summary Paradox And The Euro symbol
Keywords Paradox and euro symbol; Paradox database; Euro currency symbol

Back to top


Lost Variables In The Debugger
Authors Brian Long Type: Clinic
Issue 68 : April 2001 View article View source code
Summary Lost Variables In The Debugger
Keywords Debugging; Local variable unavailable; Optimisation, optimization; Evaluate local variable; Compiler switches; Defproj.dof, Defproj.kof; Default project options

Back to top


Public Properties
Authors Brian Long Type: Clinic
Issue 68 : April 2001 View article View source code
Summary Public Properties
Keywords Public properties; Published properties; Data hiding; Using properties; Getters and setters; Get/Set routines; Accessor routines; Implementation hiding

Back to top


Popup Data Grids
Authors Brian Long Type: Clinic
Issue 68 : April 2001 View article View source code
Summary Popup Data Grids
Keywords Popup data grids; MIDAS master/detail query; Database; Remote data module; TDataSetProvider; TClientDataset; TDCOMConnection

Back to top


Apache Shared Modules
Authors Brian Long Type: Article
Issue 69 : May 2001 View article View source code
Summary Brian Long shows how to create and use Apache shared modules using Kylix. Pardon? Wossat? Apache is the web server used on Linux and shared modules are the Apache equivalent to ISAPI DLLs used with Windows Internet Information Server for high performance web applications.
Keywords Apache shared modules; Kylix; Linux; Apache web server; Web applications; Internet; CGI applications; ScriptAlias; ExecCGI; LD_LIBRARY_PATH; Set Env LANG; Linux glibc library; SysUtils.CheckLocale; Linux .so files; Shared libraries; DSO libraries; dlOpen Linux API; Linux dynamic library loader; ld.so; Locating Kylix libraries; /usr and /usr/lib; Symlinks; Apache soure code; Recompile Apache; libhttpd.so; libhttpd.ep; pthread library; Linux loader bug; Kylix shared objects Apache; Kylix help error; Configuring Kylix dbExpress; MIDAS libmidas.so.1; Loading shared modules; LoadModule; Module handler

Back to top


Beating The System: Taming The Windows Desktop, Part 3
Authors Dave Jewell Type: Article
Issue 69 : May 2001 View article View source code
Summary Dave Jewell has the final part of his unravelling of the Windows desktop, showing us how to programmatically save the desktop layout and amend its look and feel at will.
Keywords Beating the System; Windows desktop layout; dipslib.dll; Desktop icon positions; Save and restore desktop; WM_COPYDATA; DLL injection; Inject DLL into Explorer; PostMessage; PostThreadMessage; Send message to component; Non-visual components; AllocateHWnd; Forms unit; Allocate window handle; MakeObjectInstance; Window procedure; Desktop icon text colour; Transparent text background; CLR_NONE colour; Listview bug and CLR_NONE; Listview control redraw bug; Desktop icon caption; WM_GETTEXT; LVM_SETITEMPOSITION; Set desktop icon position; ListView_SetItemTextA; RedrawSingleItem bug; Redraw one listview item; LVM_FindItem; Screen resolution

Back to top


Simple Scene Graph Management And 3D Rendering With OpenGL
Authors George Black Type: Article
Issue 69 : May 2001 View article View source code
Summary George Black explains scene graph management and the OpenGL rendering engine, an understanding of which is essential in order to create your own 3D rendering applications. He demonstrates the basic principles of scene management using some simple 3D objects to create a robot-shaped figure.
Keywords Scene graph management; OpenGL 3D graphics; 3D objects; Object view culling; OpenGL Rendering; OpenGL API; OpenGL32.dll; Window handle; Device context; Window pixel format; Rendering context; Transformation matrix; Transformation matrices; ModelView matrix; ViewPort matrix; Projection matrix; Retained mode; Immediate mode; Matrix stack; Rendering invisible objects; GL_SELECT GL_RENDER; gluPickMatrix

Back to top


Under Construction: DataCLX And dbExpress
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 69 : May 2001 View article View source code
Summary Bob Swart introduces dbExpress: the cornerstone of database access in Kylix and Delphi 6.
Keywords Under Construction; DataCLX; dbExpress; Kylix and Delphi 6; CLX; MyBase XML database engine; VisualCLX; Data-aware components; TSQLConnection; TSQLDataset; TSQLQuery; TSQLTable; TSQLStoredProcedure; TSQLMonitor; Unidirectional cursor; Browsing backwards; TClientDataset; TSQLClientDataset; ApplyUpdates; Delta packets; AfterPost; .CDS and .XML files; Migrating from BDE; Convert BDE tables to XML

Back to top


Kylix: A Technical Overview
Authors Dave Jewell Type: Article
Issue 69 : May 2001 View article No source code
Summary Now he's got his eager hands on a copy of the 'shrink-wrap' version of Kylix, Dave Jewell brings us his in-depth technical overview of the product, following on from March's introduction.
Keywords Kylix technical overview; Review; Delphi for Linux; Linux kernel patches; Qt library; Indy, WinShoes; w2kwm Window manager; Kylix components; Kylix IDE performance; VMWare performance problem; Threading; Thrddemo; Running apps from Kylix IDE; Deploying Kylix applications; Libqtintf.so; Libqt.so; Find required libraries; ldd utility; Wine Windows emulation; Windows API; Winelib; Wine thread problems?; LD_LIBRARY_PATH; Kylixpath shell script; ~/.bashrc file; Linux "autoexec.bat"; Hidden files

Back to top


XML One Conference Report
Authors Craig Murphy Type: Article
Issue 69 : May 2001 View article No source code
Summary Craig Murphy reports back on the XML One conference: what's new in the fast-paced world of XML.
Keywords XML One conference report

Back to top


Algorithms Alfresco: Manage The Damage
Authors Julian Bucknall Type: Article
Issue 69 : May 2001 View article View source code
Summary Julian Bucknall discusses compound files, otherwise known as structured storage. Ever wanted to know how to embed a whole directory and file system into one physical file? Don't miss this!
Keywords Algorithms Alfresco; Compound files; Structured storage; Extendible hash table; File system; DOS FAT; Clusters

Back to top


Back to Basics: A Reintroduction To Properties, Part 2
Authors Dave Jewell Type: Article
Issue 69 : May 2001 View article No source code
Summary Dave Jewell completes his introduction to properties, aimed especially at those who are just starting out with Delphi or Kylix, or who need a refresher.
Keywords Introduction to properties; Back to basics; Object inspector; Published section; RTTI; Runtime type information; Read-only properties; Array properties; Default keyword; Default property; Property storage; Property persistence; .DFM form file; Streaming properties; Stored keyword; How RTTI works; RTTI implementation; Properties in .NET; Properties in c#

Back to top


One Last Compile...
Authors Type: Article
Issue 69 : May 2001 View article No source code
Summary Master of none.
Keywords One last compile...

Back to top


SVCom 4.0
Authors Primoz Gabrijelcic Type: Review
Issue 69 : May 2001 View article No source code
Summary Primoz Gabrijelcic reviews Alexey Dynnikov's SvCom: classes and tools for developing NT service applications.
Keywords Review; SvCom 4.0; Alexey Dynnikov; NT service applications; NT security framework; TService; Pseudo-services; Windows 95, 98, Me; NT services emulation; NET START command

Back to top


FlashFiler 2.0
Authors Chris Frizelle Type: Review
Issue 69 : May 2001 View article No source code
Summary Chris Frizelle reviews TurboPower's FlashFiler 2.0 database system.
Keywords FlashFiler 2.0; Review; TurboPower; Database engine; Client/server; Embedded databases; SQL

Back to top


Conditional Symbols
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary Conditional Symbols
Keywords Conditional symbols; Conditional defines; $DEFINE; Conditional compilation; Compiler directives; $IFDEF; DOF and KOF files; $INCLUDE include file

Back to top


RTTI And Interfaces
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary RTTI And Interfaces
Keywords RTTI and interfaces; Published interface property; Kylix; ReferenceInterface; CLX

Back to top


Graphics Query
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary Graphics Query
Keywords TImage apparent memory leak; Bitmap graphics; Freeing bitmaps

Back to top


Intercepting Window Closure
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary Intercepting Window Closure
Keywords Intercepting window closure; Disabling Alt+F4; Disabling window close; WM_CLOSE; OnCloseQuery; CanClose

Back to top


Abbreviated Emailing
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary Abbreviated Emailing
Keywords Emailing with Outlook; Communicating with Outlook; ShellExecute; URL syntax; Mailto command; Maximum URL length

Back to top


Custom App Launching
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary Custom App Launching
Keywords Launching applications; Win32Check; CreateProcess; SW_SHOWMAXIMIZED; WinExec; Maximise window; ShowWindow

Back to top


TOleContainer And In-place Editing
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary TOleContainer And In-place Editing
Keywords TOleContainer; In-place editing; Embedded Excel object; OleCreate; TCreateInfo; CreateType; CoCreateInstance; Force new process

Back to top


Installing Kylix
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary Installing Kylix
Keywords Installing Kylix from root; Not /root/kylix; /usr/local/kylix better

Back to top


Kylix Configuration Files
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary Kylix Configuration Files
Keywords Kylix configuration files

Back to top


Kylix And Linux Distros
Authors Brian Long Type: Clinic
Issue 69 : May 2001 View article View source code
Summary Kylix And Linux Distros and Easter eggs
Keywords Kylix and Linux versions; Linux distributions distros; Linux patches; Kylix Easter eggs

Back to top


dbExpress Tips And Tricks
Authors Guy Smith-Ferrier Type: Article
Issue 70 : June 2001 View article View source code
Summary Guy Smith-Ferrier follows on from Bob Swart's introduction to dbExpress with a selection of more advanced tips and tricks to help you get the most from it.
Keywords dbExpress tips and tricks; dbxdrivers dbxconnections; dbExpress drivers; Kylix; TSQLConnection; BeforeConnect; LoadParamsOnconnect; LoadParamsFromINIFile; Loading connection parameter; dbExpress metadata; GetTableNames; GetFieldNames; GetIndexNames; GetProcedureNames; GetProcedureParams; TSQLDataSet; SetSchemaInfo; Executing SQL directly; Read-only recordsets; TClientDataset; TSQLClientDataset; Execute, ExecuteDirect; dbExpress error codes; SQLConst unit; DBXError array; Connection cloning; ActiveStatements; MaxStmtsPerConn; Maximum statements; Statements per connection; AutoClone; MySQL; TSQLMonitor; SQL Monitor; Tracing SQL calls; SQLTraceDesc; Displaying TSQLMonitor data; dbExpress performance; Deploying dbExpress; DBEXPINT.DLL; libsqllib.so.1; MIDAS.DLL; midas.so; Statically linking dbExpress

Back to top


Under Construction: WebBroker For Linux
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 70 : June 2001 View article View source code
Summary Bob Swart shows how we can use Kylix to create web server applications for the Apache web server running on Linux, with the built-in Web Broker technology found in the Kylix Server Developer Edition.
Keywords Under Construction; WebBroker for Linux; Apache web server; Web applications; Internet; Kylix; Web modules; TWebDispatcher; WebActionItem; PathInfo; SetEnv LD_LIBRARY_PATH; httpd.conf file; TPageProducer; Cookies; CookieFields; ContentFields; QueryFields; HTMLDoc HTMLFile; TDataSetTableProducer; TSQLConnection; Deploying Kylix web apps; SetEnv LANG in httpd.conf; SetEnv HOME in httpd.conf

Back to top


How CLX Uses Qt
Authors Brian Long Type: Article
Issue 70 : June 2001 View article View source code
Summary Brian Long looks under the hood of the CLX library, used in Kylix and now in Delphi 6, to see how it uses Trolltech's cross-platform Qt C++ class library. He starts by looking at what Qt is and why it was chosen as the basis for the CLX library, and then moves on to see how Qt has been integrated with the Object Pascal language.
Keywords How CLX uses QT; Kylix; Linux; QT library; Widget sets; Linux user interface; X Windows; Trolltech; KDE desktop; Gnome and GTK widget set; VisualCLX; QT documentation; QTinterface library; libqt.so; Name mangling; Name decoration; libqtintf.so; Flat methods; Calling C++ classes; Flattened classes; CLXDisplay API; Qt.pas unit; Opaque references; Magic cookie, handle; QPushButton; TWidgetControl; Widget flags; SaveWidgetState; RestoreWidgetState; QT notification model; Windows messages; VCL message handlers; VCL events; X Windows events; MotionNotify; KeyPress KeyRelease; ButtonPress ButtonRelease; QT events; QT virtual methods; QEvent; QMouseEvent; QT signals and slots; CLX events; Linux signals; Hook objects; Hooking a QT signal; HookEvents; QWidget_hook; Event filters; MainEventFilter; Qt_hook_hook_events; installEventFilter; Custom events; QEventType; QEventType_ClxUser; QCustomEvent; QApplicarion_sendEvent; QT licensing

Back to top


Beating The System: API-Level Programming With Kylix
Authors Dave Jewell Type: Article
Issue 70 : June 2001 View article View source code
Summary Dave Jewell says that the primary aim of this month's column is to widen our vision in terms of what Kylix can do for us. He demonstrates that Kylix will do a lot more than simply create CLX-based applications: it's equally well suited to writing efficient, easily deployable command-line utilities, barefoot X applications, or whatever. There's a whole new universe of APIs to explore here, so get stuck in!
Keywords Beating the System; Linux API with Kylix; Kylix architecture; CLX; Qt library; Linux kernel; Kernel interrupt $80; syscall routine in libc.pas; libc.so.6; glibc2 glibc; GNU; dlopen; LD_LIBRARY_PATH; RTLD_LAZY; RTLD_NOW; Undefined symbols; RTLD_GLOBAL; CreateGUID; Creating processes; Managing processes; /proc directory; Linux system call; Fork; Blocking; pid process identifier; X Windows; xlib.pas; libqtintf.so; bplbaseclx; Xlib; X protocol; XCreateWindow; XOpenDisplay; XDefaultRootWindow; XMapWindow; XFlush; __sleep

Back to top


Perspectives: Getting To Grips With Palm
Authors Jim Cooper Type: Article
Issue 70 : June 2001 View article No source code
Summary Jim Cooper is a Palm enthusiast and reveals that our Delphi skills are surprisingly handy when developing for these tiny machines. He starts by looking at PDAs in general, then at the major operating systems, before going on to examine what is involved in programming the little devils, and finally outlines what our Delphi experience can bring to the party, in the shape of PocketStudio from Pocket Technologies.
Keywords Perspectives; Palm palmtop computer; Personal digital assistant; PDA; WinCE Windows CE; Palm versus PocketPC; PalmOS; Graffiti; Handwriting recognition; EPOC Psion; Handspring Visor; Sony Clie; Synchronise Palm and PC; Delphi and Palm; HotSync conduits; Ehand conduit ActiveX; Conduit development kit; Delphi conduit components; Writing Palm applications; Palm applications in Delphi; PocketStudio; Palm OS emulator POSE

Back to top


Algorithms Alfresco: Gilding Pale Streams
Authors Julian Bucknall Type: Article
Issue 70 : June 2001 View article View source code
Summary Julian Bucknall extends the TStream class in a variety of interesting and useful ways, adding a variety of filters for debugging, regex handling, encryption and more.
Keywords Algorithms Alfresco; Extending TStream; Streams; File streams; Filter streams; TStream descendants; Read-only filter stream; Buffering filter streams; Bufferred TFileStream; Text filter stream; Parse text into lines; Debug filter stream; Regex filter stream; Regular expressions; Pattern matching; Regular expression bug; Encryption filter stream; Window filter stream; Multiple views of stream

Back to top


One Last Compile...
Authors Type: Article
Issue 70 : June 2001 View article No source code
Summary The Joy Of TClientDataSet.
Keywords One last compile...

Back to top


Review: CodeSite 2.0 Professional
Authors Dave Jewell Type: Review
Issue 70 : June 2001 View article No source code
Summary Dave Jewell checks out the new version of Raize Software's debugging aid.
Keywords CodeSite 2.0 Professional; Review; Raize Components; Ray Konopka; Debugging tools; Diagnostic messages

Back to top


Review: SQL Tester
Authors Richard Stevens Type: Review
Issue 70 : June 2001 View article No source code
Summary Richard Stevens examines Red Brook Software's SQL testing utility.
Keywords SQL Tester; Review; Red Brook Software; Testing SQL statements; BDE, MDAC

Back to top


Error Starting Kylix
Authors Brian Long Type: Clinic
Issue 70 : June 2001 View article View source code
Summary Error Starting Kylix
Keywords Error starting Kylix; Runtime error 230 Kylix; JPEG library compilation; startkylix script; JPEG error #21; jpeglib.h; D_MAX_BLOCKS_IN_MCU; JPEG decompressor; JPG files

Back to top


Linux Equivalents Of Win32 APIs
Authors Brian Long Type: Clinic
Issue 70 : June 2001 View article View source code
Summary Linux Equivalents Of Win32 APIs
Keywords Linux API; Translate Delphi to Kylix; Windows API Linux; Translated Win32 API calls; getlogin security problem; LOGNAME; GetEnvironmentVariable Kylix; getuid get user ID; getpwuid; Do not use cuserid; geteuid; OutputDebugString Kylix; syslog Linux system logging; varargs directive; Variable number of arguments

Back to top


Dynamically Choosing COM Objects
Authors Brian Long Type: Clinic
Issue 70 : June 2001 View article View source code
Summary Dynamically Choosing COM Objects
Keywords Choosing COM objects; Select COM object at runtime; ClassID coclass identifier; Dynamically loading ActiveX; Register ActiveX; DllGetClassObject

Back to top


Type Library Editor Quirk
Authors Brian Long Type: Clinic
Issue 70 : June 2001 View article View source code
Summary Type Library Editor Quirk
Keywords Type library editor; Underscores on interfaces; Identifier clashes; Tlibimp.sym; Remapping type library names

Back to top


Stack-Based Objects In Delphi
Authors Pedro Agull≤ Soliveres Type: Article
Issue 71 : July 2001 View article View source code
Summary Pedro Agull≤ Soliveres demonstrates techniques to optimise object construction and destruction.
Keywords Stack-based objects; Performance of small objects; Construction small objects; Destruction small objects; GetMem; Optimisation; Initialise VMT pointers; Memory allocation speed; Allocating objects on stack; NewInstance; InitInstance; AfterConstruction; BeforeConstruction; EOutOfMemory; FreeMem; FreeInstance; Stack-based construction; Fast object construction; $A compiler directive; Aligned record fields; InstanceSize; Data alignment

Back to top


Algorithms Alfresco: Distribution And Radix Sorts
Authors Julian Bucknall Type: Article
Issue 71 : July 2001 View article View source code
Summary Julian Bucknall explains the mysteries of these sorting algorithms that don't use key comparisons to do their work: how they accomplish their tasks and when they will be of best use.
Keywords Algorithms Alfresco; Distribution sort; Radix sort; Sorting algorithms; Key comparisons; Sort with no key comparison; Performance; Counting sort; Stability of sort; Stable sort; MSD radix sorting; Most significant digit; Insertion sort; LSD radix sort; Least significant digit; Choosing sorting algorithm

Back to top


Delphi Meets C# Via COM
Authors Craig Murphy Type: Article
Issue 71 : July 2001 View article View source code
Summary Craig Murphy explains how Delphi can meet the C# language with a little help from COM. With the release of the .NET platform, Microsoft is making C# its language of choice. However, as interoperabilty is becoming more and more important, it is possible to use C# objects in Delphi and vice versa. Craig demonstrates how to use C# and Delphi together and why you may want to.
Keywords C# language; Using C# with Delphi; .NET framework; ECMA standards; .NET interoperability; Delphi objects with C#; MISL, IL; CLR; Common language runtime; CLS language specification; Managed code; Creating c# object; COM components; COM callable wrapper; Proxy object; Shared name; Digital signature; Global assembly cache; .NET assemblies; Assembly versioning; IL disassembler; regasm.exe type library tool; Runtime callable wrapper RCW; Visual Studio .NET; .NET metadata

Back to top


Under Construction: Kylix Desktop Does CGI Too
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 71 : July 2001 View article View source code
Summary Bob Swart shows how to create web server applications using just the Desktop version of Kylix (which has just been dramatically reduced in price!), including using dbExpress to develop database web applications.
Keywords Under Construction; Kylix; Linux; CGI applications; CGI with Kylix Desktop; Kylix console applications; Apache web server; Web applications; Internet; HTML content-type; text/html; Command line compiler; LD_LIBRARY_PATH; kylixpath script; httpd.conf; REQUEST_METHOD; CONTENT_LENGTH; CGI variables; QUERY_STRING; HTTP_COOKIE; REMOTE_ADDR; SCRIPT_NAME; HTTP_USER_AGENT; PATH_INFO; Environment variables; HTML form variables; CGI unit; GetEnvironmentStrings; Cookies; dbExpress database; Interbase in CGI; TSQLDataSet; TSQLConnection; CLX; Generating HTML; Unidirectional dataset; Cursor; SysUtils.StrToIntDef; Dataset navigation

Back to top


One Last Compile...
Authors Type: Article
Issue 71 : July 2001 View article No source code
Summary More Joy Of TClientDataSets.
Keywords One last compile...

Back to top


ADO.NET Explored
Authors Guy Smith-Ferrier Type: Article
Issue 71 : July 2001 View article View source code
Summary Guy Smith-Ferrier explains the successor to ADO and shows how to make full use of Microsoft's latest database access technology in Delphi.
Keywords ADO.NET; .NET framework; Visual Studio .NET Beta 1; XML; ADO+; Remote data services RDS; COM marshaling; COM calls and firewalls; OLEDB classes; Tabular data stream TDS; Regasm.exe utility; Com wrapper for .NET; COMSystemData.dll; System.data assembly; CreateCOMObject; SQLConnection; SQLCommand; SQL Server; DataReader; Read-only cursor; Unidirectional cursor; Firehose cursor; DataSetCommand; oWorkAround; DataAdapter; In-memory database; .NET COM interop layer; DataRelation; Writing ADO.NET data; Import export XML; WriteDiffGram

Back to top


Beating The System: Windows XP
Authors Dave Jewell Type: Article
Issue 71 : July 2001 View article No source code
Summary On Windows XP Dave Jewell has been checking out what the newest version of the Microsoft operating system we all know and love has in store for the folks at the sharp end: developers creating applications for the platform! Keep ahead of the game with Dave's overview.
Keywords Beating the System; Windows XP; Roxio, Adaptec; CD-R, CD-RW; Visual themes; Window client area; Window non-client area; Comctl32.dll Windows XP; Comctl32 version 6; Non-rectangular windows; Shaped windows; Window transparency effects; Alpha-blending; GDI+; Uxtheme.dll; GetThemeFont; GetThemeMetric; Switching Windows users; Fast user switching; Session switching; Fusion; Side-by-side DLL technology; System file protection SFP; DLL hell; Shared DLL problems; Application manifest; .NET metadata; User experience controls; RT_MANIFEST resource; publicKeyToken; WinSxS; WM_WTSESSION_CHANGE; Remote connects

Back to top


What's New In Delphi 6?
Authors Brian Long Type: Review
Issue 71 : July 2001 View article View source code
Summary Brian Long kicks off our in-depth Delphi 6 review double-act with a tour of all that's new in the latest incarnation: what is it, what do you do with it, and is it any good?
Keywords Delphi 6 overview; Review; Delphi 6 features; BizSnap; SOAP and XML; Web Services; IInvokable; THTTPSoapDispatcher; THTTPSoapPascalInvoker; TWSDLHTMLPublish; WSDL; TXMLDocument; XML document manipulation; XML data binding wizard; XML DOM level 2 parser; XML parsers; XML transformation; WebSnap; Apache web server Windows; SiteExpress; Server-side scripting; ActiveScript languages; Adapter components; TDataSetAdapter; XSL; Web application wizard; Web application debugging; Web app debugger; DataSnap; MIDAS; TSoapConnection; Soap Server data module; ConnectionBroker; TLocalConnection; CORBA; Delphi 6 IDE; Data module designer; Object treeview; Surface designers; Code completion; Docking; Delphi 6 compiler changes; Enumerated types; Writeable typed constants; $WRITEABLECONST; Disable writeable constants; Library directive; Platform directive; $WARN compiler directive; Hint directives; Disable compiler warnings; Variable number of arguments; MSWINDOWS symbol; $MESSAGE compiler directive; $LIBVERSION; $LIBSUFFIX; $LIBPREFIX; $SetPEFlags; PE file header; $SetPEOpt; DLLCharacteristics; CONDITIONALEXPRESSIONS; CHASM inline assembler; COM+; dbExpress; Actions; Custom variants; ConvUtils conversion; Conversion routines; Euro conversion; Shell controls; Windows shell; Internationalisation; Translation tools; External translation manager

Back to top


Delphi 6: A Cross-Platform Development Perspective
Authors Dave Jewell Type: Review
Issue 71 : July 2001 View article No source code
Summary Dave Jewell takes up the reins from Brian to examine the cross-platform aspects of Delphi 6: specifically, the new CLX framework, built on the Qt library, and what performance and deployment issues it raises for Windows developers (hint: there may be some surprises!)
Keywords Delphi 6 cross-platform; Cross-platform development; Delphi 6 and Kylix; CLX; Linux and Windows; Qt library; Deployment of CLX apps; Qtintf.dll; libqtintf.so; Depends.exe; DLL dependency; Qtintf load address; CLX performance versus VCL; QT 3.0; QueryPerformanceCounter; QueryPerformanceFrequency; SetThreadPriority; Qt performance on Windows

Back to top


Missing Debugger Windows
Authors Brian Long Type: Clinic
Issue 71 : July 2001 View article View source code
Summary Missing Debugger Windows
Keywords Debugger windows; Customise Delphi IDE; Editing desktop file; Retrieve lost windows

Back to top


SDF Files
Authors Brian Long Type: Clinic
Issue 71 : July 2001 View article View source code
Summary SDF Files
Keywords Reading SDF files; TStrings; System Data Format

Back to top


RTTI To The Rescue
Authors Brian Long Type: Clinic
Issue 71 : July 2001 View article View source code
Summary RTTI To The Rescue
Keywords RTTI; Resource strings; Does component have caption; Typinfo unit; IsPublishedProp; GetStrProp

Back to top


Type Libraries And COM Parameters
Authors Brian Long Type: Clinic
Issue 71 : July 2001 View article View source code
Summary Type Libraries And COM Parameters
Keywords Type libraries; OLE streams; OLEStream; Interface not accessible; COM programming; IStream, IUnknown

Back to top


Hiding From The Windows 95/98/Me Task Manager
Authors Brian Long Type: Clinic
Issue 71 : July 2001 View article View source code
Summary Hiding From The Windows 95/98/Me Task Manager
Keywords Hiding from task manager; Windows task manager; Windows services; Pseudo-services; RegisterServiceProcess; Simple service application; WM_ENDSESSION; Application.Terminated; ENDSESSION_LOGOFF; HookMainWindow; Window hook; Surviving a user logoff

Back to top


Problems With Packages
Authors Brian Long Type: Clinic
Issue 71 : July 2001 View article View source code
Summary Problems With Packages
Keywords Packages; Recompiling packages

Back to top


Update (RTTI and Interfaces)
Authors Brian Long Type: Clinic
Issue 71 : July 2001 View article View source code
Summary Update (RTTI and Interfaces)
Keywords RTTI and interfaces

Back to top


Preparing For A Terminal Server Environment
Authors Jani Jarvinen Type: Article
Issue 72 : August 2001 View article View source code
Summary Jani JΣrvinen describes how you should prepare your software to work with Microsoft Terminal Services, the remote access system which allows running of applications on the server, only transferring the user interface to the client. A smooth user experience needs special awareness from the software developer: Jani tells us all how to deliver that smooth user experience!
Keywords Windows terminal services; Multi-user; Multiple desktops; Remote administration; Remote operation; Multiple users; Citrix MetaFrame; Multi-user Windows kernel; Terminal server; TEMP environment variable; HKEY_CURRENT_USER; Registry settings; HKEY_LOCAL_MACHINE; Terminal Services API; WTSEnumerateSessions; WTSAPI32.H; Platform SDK; WTS_CURRENT_SERVER_HANDLE; SM_REMOTESESSION; GetSystemMetrics; Session information; ProcessIDtoSessionID; Process ID, Session ID; WTSFreeMemory

Back to top


Under Construction: Delphi 6 Web Services: SOAP
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 72 : August 2001 View article View source code
Summary Web Services is very much the buzz phrase of today and this month Bob Swart shows how to use the new SOAP capabilities of Delphi 6 to create your very own Web Services as easy as pie.
Keywords Under Construction; Delphi 6 features; Web Services; SOAP; XML; BizSnap; Distributed applications; WSDL; SOAP server application; TWSDLHTMLPublish; THHTPSOAPDispatcher; IInvokable interface; InvokeRegistry; stdcall calling convention; Consuming web services; Calling web services; HTTPRIO component; Remote invokable object; WSDLLocation

Back to top


Hackers 101
Authors Jason Southwell Type: Article
Issue 72 : August 2001 View article No source code
Summary Jason Southwell discusses web security: how to write applications that react appropriately to hacker attacks. He explains how a hacker tries to take control of your code and how to write code in your apps to block these attacks.
Keywords Hacking; Software security; Security procedures; Creating secure software; Preventing hacking; Packet sniffing; TCP/IP packets; Data sniffing; Natas sniffing tool; Cracking passwords; Social engineering; SSL secure socket layer; Virtual private network; Encryption algorithms; Web page expiration; HTML expires; Browser back button; Expires meta tag; Buffer overrun; Web applications; Internet; EIP register

Back to top


Algorithms Alfresco: Squeeze, Please
Authors Julian Bucknall Type: Article
Issue 72 : August 2001 View article View source code
Summary Julian Bucknall returns to the subject of data compression with a new technique which makes use of the rather ingenious Burrows-Wheeler transform to get extra performance out of Huffman encoding.
Keywords Algorithms Alfresco; Data compression; Burrows-Wheeler transform; Huffman encoding; Deflate algorithm, Deflate64; Huffman tree; NP-complete problem; Block transform; LX77, Zip; Move-to-front algorithm; Move to front algorithm; Jon Bentley; Decompression

Back to top


Dynamic Web Images With Kylix
Authors Bob Swart (aka Dr.Bob) Type: Article
Issue 72 : August 2001 View article View source code
Summary Bob Swart shows how to create images on the fly from databases in Kylix CGI applications using Kylix Desktop.
Keywords Dynamic web images; Kylix desktop developer; Web applications; Internet; Linux; Apache web server; Generating dynamic images; Blob fields; TGraphicField.AsString; Binary data; BMP bitmap format; Netscape and BMP bitmaps; Biolife table images; Converting BMP to JPEG JPG; CGI applications

Back to top


One Last Compile...
Authors Type: Article
Issue 72 : August 2001 View article No source code
Summary Bad news from DCon
Keywords One last compile...

Back to top


Beating The System: Strings Unstrung
Authors Dave Jewell Type: Article
Issue 72 : August 2001 View article No source code
Summary Dave Jewell wants to put strings to bed: specifically how Delphi implements long strings and the ramifications of this for your own code.
Keywords Beating the System; String types; AnsiString; ShortString; Pascal string type; Allocating string data; String initialisation; String finalisation; InstanceSize; DCUExplorer; Disassemble DCU files; Local and global scope; AnsiString implementation; String function results; Passing string arguments; UniqueString; @LstrClr; SafeGuards; JEDI code library

Back to top


Perspectives: Microsoft TechEd 2001
Authors Chris Frizelle Type: Article
Issue 72 : August 2001 View article No source code
Summary Chris Frizelle reports back from Microsoft's annual techno-bash. This year your intrepid Editor braved squid and octopus by the bucket-load in sunny Barcelona to bring you the latest on what is setting hearts a-flutter back in Redmond at MS HQ.
Keywords Perpsectives; Microsoft TechEd Europe 2001; .NET; XML; SOAP; Web Services; WSDL, UDDI; Visual Studio .NET; C# language; ASP.NET; MSF; Solutions framework

Back to top


Titanium 2.0
Authors Dave Jewell Type: Review
Issue 72 : August 2001 View article No source code
Summary Dave Jewell checks out this new software security package from BitArts: is it truly uncrackable, will it genuinely increase your software sales revenues? Dave has the answers.
Keywords Titanium 2.0; Review; BitArts; Software security; Software protection; Piracy; Encryption; EXE wrapper; Authentication; Mutation engine; Selling software; Secure transactions

Back to top


GExperts 1.0
Authors Primoz Gabrijelcic Type: Review
Issue 72 : August 2001 View article No source code
Summary Primoz Gabrijelcic evaluates this freeware package of add-in experts for Delphi to see if it really will make your development work easier and smoother.
Keywords GExperts 1.0; Review; Delphi IDE experts; Gerald Nunn; Erik B Berry; Generating experts

Back to top


Bug With Global Variables?
Authors Brian Long Type: Clinic
Issue 72 : August 2001 View article View source code
Summary Bug With Global Variables?
Keywords Global variables; Variable initialisation; Local variables

Back to top


Record Property Issues
Authors Brian Long Type: Clinic
Issue 72 : August 2001 View article View source code
Summary Record Property Issues
Keywords Record properties; Assign to record properties; Updating record properties; Record property

Back to top


Delphi ToolBar Problem
Authors Brian Long Type: Clinic
Issue 72 : August 2001 View article View source code
Summary Delphi ToolBar Problem
Keywords Delphi IDE toolbar problem; Delphi 5; IDE loses toolbar custom; Lost toolbar customisation; Save IDE toolbar status; Registry

Back to top


AVs When Destroying Components
Authors Brian Long Type: Clinic
Issue 72 : August 2001 View article View source code
Summary
Keywords Destroying components; Access violation; Free or Destroy

Back to top


Word Automation Query
Authors Brian Long Type: Clinic
Issue 72 : August 2001 View article View source code
Summary Word Automation Query
Keywords Microsoft Word automation; Insert Tab character; Automation servers

Back to top


Reading Excel Spreadsheets
Authors Brian Long Type: Clinic
Issue 72 : August 2001 View article View source code
Summary Reading Excel Spreadsheets
Keywords Reading Excel spreadhseet; Automation; TExcelApplication; Member not found error; VBA; Visual Basic; TExcelWorksheet

Back to top


Updates
Authors Brian Long Type: Clinic
Issue 72 : August 2001 View article View source code
Summary Updates
Keywords Updates; MoveFileEx; MoveFile_Delay_UntilReboot; Windows NT; Sending email; MAPI; TNMSMTP

Back to top